// export waves , timer , reltimer , freesides , playersides , queue , TeamA , TeamB , TASettings , TBSettings , bs , income , req , soldiers ; starting var i ; begin playersides = [ 1 , 2 , 3 , 4 , 5 , 6 ] ;
   0: LD_ADDR_EXP 5
   4: PUSH
   5: LD_INT 1
   7: PUSH
   8: LD_INT 2
  10: PUSH
  11: LD_INT 3
  13: PUSH
  14: LD_INT 4
  16: PUSH
  17: LD_INT 5
  19: PUSH
  20: LD_INT 6
  22: PUSH
  23: EMPTY
  24: LIST
  25: LIST
  26: LIST
  27: LIST
  28: LIST
  29: LIST
  30: ST_TO_ADDR
// freesides = [ 7 , 8 ] ;
  31: LD_ADDR_EXP 4
  35: PUSH
  36: LD_INT 7
  38: PUSH
  39: LD_INT 8
  41: PUSH
  42: EMPTY
  43: LIST
  44: LIST
  45: ST_TO_ADDR
// TeamA = [ 1 , 2 , 3 ] ;
  46: LD_ADDR_EXP 7
  50: PUSH
  51: LD_INT 1
  53: PUSH
  54: LD_INT 2
  56: PUSH
  57: LD_INT 3
  59: PUSH
  60: EMPTY
  61: LIST
  62: LIST
  63: LIST
  64: ST_TO_ADDR
// TeamB = [ 4 , 5 , 6 ] ;
  65: LD_ADDR_EXP 8
  69: PUSH
  70: LD_INT 4
  72: PUSH
  73: LD_INT 5
  75: PUSH
  76: LD_INT 6
  78: PUSH
  79: EMPTY
  80: LIST
  81: LIST
  82: LIST
  83: ST_TO_ADDR
// soldiers = [ 0 , 0 ] ;
  84: LD_ADDR_EXP 14
  88: PUSH
  89: LD_INT 0
  91: PUSH
  92: LD_INT 0
  94: PUSH
  95: EMPTY
  96: LIST
  97: LIST
  98: ST_TO_ADDR
// timer = 0 ;
  99: LD_ADDR_EXP 2
 103: PUSH
 104: LD_INT 0
 106: ST_TO_ADDR
// waves = 0 ;
 107: LD_ADDR_EXP 1
 111: PUSH
 112: LD_INT 0
 114: ST_TO_ADDR
// reltimer = 0 ;
 115: LD_ADDR_EXP 3
 119: PUSH
 120: LD_INT 0
 122: ST_TO_ADDR
// queue = [ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ] ;
 123: LD_ADDR_EXP 6
 127: PUSH
 128: LD_INT 0
 130: PUSH
 131: LD_INT 0
 133: PUSH
 134: LD_INT 0
 136: PUSH
 137: LD_INT 0
 139: PUSH
 140: LD_INT 0
 142: PUSH
 143: LD_INT 0
 145: PUSH
 146: LD_INT 0
 148: PUSH
 149: LD_INT 0
 151: PUSH
 152: EMPTY
 153: LIST
 154: LIST
 155: LIST
 156: LIST
 157: LIST
 158: LIST
 159: LIST
 160: LIST
 161: ST_TO_ADDR
// game_speed = 7 ;
 162: LD_ADDR_OWVAR 65
 166: PUSH
 167: LD_INT 7
 169: ST_TO_ADDR
// TASettings = [ 0 , 1 , 1 , 0 ] ;
 170: LD_ADDR_EXP 9
 174: PUSH
 175: LD_INT 0
 177: PUSH
 178: LD_INT 1
 180: PUSH
 181: LD_INT 1
 183: PUSH
 184: LD_INT 0
 186: PUSH
 187: EMPTY
 188: LIST
 189: LIST
 190: LIST
 191: LIST
 192: ST_TO_ADDR
// TBSettings = [ 0 , 1 , 1 , 0 ] ;
 193: LD_ADDR_EXP 10
 197: PUSH
 198: LD_INT 0
 200: PUSH
 201: LD_INT 1
 203: PUSH
 204: LD_INT 1
 206: PUSH
 207: LD_INT 0
 209: PUSH
 210: EMPTY
 211: LIST
 212: LIST
 213: LIST
 214: LIST
 215: ST_TO_ADDR
// income = [ 20 , 20 , 20 , 20 , 20 , 20 , 20 , 20 ] ;
 216: LD_ADDR_EXP 12
 220: PUSH
 221: LD_INT 20
 223: PUSH
 224: LD_INT 20
 226: PUSH
 227: LD_INT 20
 229: PUSH
 230: LD_INT 20
 232: PUSH
 233: LD_INT 20
 235: PUSH
 236: LD_INT 20
 238: PUSH
 239: LD_INT 20
 241: PUSH
 242: LD_INT 20
 244: PUSH
 245: EMPTY
 246: LIST
 247: LIST
 248: LIST
 249: LIST
 250: LIST
 251: LIST
 252: LIST
 253: LIST
 254: ST_TO_ADDR
// req = [ [ 10 , 1 , 2 ] , [ 100 , 2 , 3 ] , [ 25 , 1 , 0 ] , [ 25 , 2 , 0 ] , [ 400 , 1 , 0 ] , [ 175 , 2 , 0 ] , [ 10 , 3 , 0 ] , [ 5 , 3 , 0 ] , [ 2 , 3 , 0 ] , [ 400 , 1 , 0 ] , [ 50 , 2 , 0 ] , [ 5 , 3 , 0 ] , [ 50 , 2 , 0 ] , [ 15 , 2 , 0 ] , [ 150 , 2 , 0 ] ] ;
 255: LD_ADDR_EXP 13
 259: PUSH
 260: LD_INT 10
 262: PUSH
 263: LD_INT 1
 265: PUSH
 266: LD_INT 2
 268: PUSH
 269: EMPTY
 270: LIST
 271: LIST
 272: LIST
 273: PUSH
 274: LD_INT 100
 276: PUSH
 277: LD_INT 2
 279: PUSH
 280: LD_INT 3
 282: PUSH
 283: EMPTY
 284: LIST
 285: LIST
 286: LIST
 287: PUSH
 288: LD_INT 25
 290: PUSH
 291: LD_INT 1
 293: PUSH
 294: LD_INT 0
 296: PUSH
 297: EMPTY
 298: LIST
 299: LIST
 300: LIST
 301: PUSH
 302: LD_INT 25
 304: PUSH
 305: LD_INT 2
 307: PUSH
 308: LD_INT 0
 310: PUSH
 311: EMPTY
 312: LIST
 313: LIST
 314: LIST
 315: PUSH
 316: LD_INT 400
 318: PUSH
 319: LD_INT 1
 321: PUSH
 322: LD_INT 0
 324: PUSH
 325: EMPTY
 326: LIST
 327: LIST
 328: LIST
 329: PUSH
 330: LD_INT 175
 332: PUSH
 333: LD_INT 2
 335: PUSH
 336: LD_INT 0
 338: PUSH
 339: EMPTY
 340: LIST
 341: LIST
 342: LIST
 343: PUSH
 344: LD_INT 10
 346: PUSH
 347: LD_INT 3
 349: PUSH
 350: LD_INT 0
 352: PUSH
 353: EMPTY
 354: LIST
 355: LIST
 356: LIST
 357: PUSH
 358: LD_INT 5
 360: PUSH
 361: LD_INT 3
 363: PUSH
 364: LD_INT 0
 366: PUSH
 367: EMPTY
 368: LIST
 369: LIST
 370: LIST
 371: PUSH
 372: LD_INT 2
 374: PUSH
 375: LD_INT 3
 377: PUSH
 378: LD_INT 0
 380: PUSH
 381: EMPTY
 382: LIST
 383: LIST
 384: LIST
 385: PUSH
 386: LD_INT 400
 388: PUSH
 389: LD_INT 1
 391: PUSH
 392: LD_INT 0
 394: PUSH
 395: EMPTY
 396: LIST
 397: LIST
 398: LIST
 399: PUSH
 400: LD_INT 50
 402: PUSH
 403: LD_INT 2
 405: PUSH
 406: LD_INT 0
 408: PUSH
 409: EMPTY
 410: LIST
 411: LIST
 412: LIST
 413: PUSH
 414: LD_INT 5
 416: PUSH
 417: LD_INT 3
 419: PUSH
 420: LD_INT 0
 422: PUSH
 423: EMPTY
 424: LIST
 425: LIST
 426: LIST
 427: PUSH
 428: LD_INT 50
 430: PUSH
 431: LD_INT 2
 433: PUSH
 434: LD_INT 0
 436: PUSH
 437: EMPTY
 438: LIST
 439: LIST
 440: LIST
 441: PUSH
 442: LD_INT 15
 444: PUSH
 445: LD_INT 2
 447: PUSH
 448: LD_INT 0
 450: PUSH
 451: EMPTY
 452: LIST
 453: LIST
 454: LIST
 455: PUSH
 456: LD_INT 150
 458: PUSH
 459: LD_INT 2
 461: PUSH
 462: LD_INT 0
 464: PUSH
 465: EMPTY
 466: LIST
 467: LIST
 468: LIST
 469: PUSH
 470: EMPTY
 471: LIST
 472: LIST
 473: LIST
 474: LIST
 475: LIST
 476: LIST
 477: LIST
 478: LIST
 479: LIST
 480: LIST
 481: LIST
 482: LIST
 483: LIST
 484: LIST
 485: LIST
 486: ST_TO_ADDR
// if Multiplayer then
 487: LD_OWVAR 4
 491: IFFALSE 703
// begin TeamA = [ ] ;
 493: LD_ADDR_EXP 7
 497: PUSH
 498: EMPTY
 499: ST_TO_ADDR
// TeamB = [ ] ;
 500: LD_ADDR_EXP 8
 504: PUSH
 505: EMPTY
 506: ST_TO_ADDR
// playersides = [ ] ;
 507: LD_ADDR_EXP 5
 511: PUSH
 512: EMPTY
 513: ST_TO_ADDR
// freesides = [ ] ;
 514: LD_ADDR_EXP 4
 518: PUSH
 519: EMPTY
 520: ST_TO_ADDR
// for i = 1 to 8 do
 521: LD_ADDR_VAR 0 1
 525: PUSH
 526: DOUBLE
 527: LD_INT 1
 529: DEC
 530: ST_TO_ADDR
 531: LD_INT 8
 533: PUSH
 534: FOR_TO
 535: IFFALSE 589
// if mp_sides_positions [ i ] <> 0 then
 537: LD_OWVAR 17
 541: PUSH
 542: LD_VAR 0 1
 546: ARRAY
 547: PUSH
 548: LD_INT 0
 550: NONEQUAL
 551: IFFALSE 571
// playersides = playersides ^ i else
 553: LD_ADDR_EXP 5
 557: PUSH
 558: LD_EXP 5
 562: PUSH
 563: LD_VAR 0 1
 567: ADD
 568: ST_TO_ADDR
 569: GO 587
// freesides = freesides ^ i ;
 571: LD_ADDR_EXP 4
 575: PUSH
 576: LD_EXP 4
 580: PUSH
 581: LD_VAR 0 1
 585: ADD
 586: ST_TO_ADDR
 587: GO 534
 589: POP
 590: POP
// for i = 1 to playersides do
 591: LD_ADDR_VAR 0 1
 595: PUSH
 596: DOUBLE
 597: LD_INT 1
 599: DEC
 600: ST_TO_ADDR
 601: LD_EXP 5
 605: PUSH
 606: FOR_TO
 607: IFFALSE 701
// begin if mp_sides_teams [ playersides [ i ] ] = 1 then
 609: LD_OWVAR 15
 613: PUSH
 614: LD_EXP 5
 618: PUSH
 619: LD_VAR 0 1
 623: ARRAY
 624: ARRAY
 625: PUSH
 626: LD_INT 1
 628: EQUAL
 629: IFFALSE 655
// TeamA = TeamA ^ playersides [ i ] else
 631: LD_ADDR_EXP 7
 635: PUSH
 636: LD_EXP 7
 640: PUSH
 641: LD_EXP 5
 645: PUSH
 646: LD_VAR 0 1
 650: ARRAY
 651: ADD
 652: ST_TO_ADDR
 653: GO 699
// if mp_sides_teams [ playersides [ i ] ] = 2 then
 655: LD_OWVAR 15
 659: PUSH
 660: LD_EXP 5
 664: PUSH
 665: LD_VAR 0 1
 669: ARRAY
 670: ARRAY
 671: PUSH
 672: LD_INT 2
 674: EQUAL
 675: IFFALSE 699
// TeamB = TeamB ^ playersides [ i ] ;
 677: LD_ADDR_EXP 8
 681: PUSH
 682: LD_EXP 8
 686: PUSH
 687: LD_EXP 5
 691: PUSH
 692: LD_VAR 0 1
 696: ARRAY
 697: ADD
 698: ST_TO_ADDR
// end ;
 699: GO 606
 701: POP
 702: POP
// end ; if TeamA > 3 then
 703: LD_EXP 7
 707: PUSH
 708: LD_INT 3
 710: GREATER
 711: IFFALSE 780
// for i = 4 to TeamA do
 713: LD_ADDR_VAR 0 1
 717: PUSH
 718: DOUBLE
 719: LD_INT 4
 721: DEC
 722: ST_TO_ADDR
 723: LD_EXP 7
 727: PUSH
 728: FOR_TO
 729: IFFALSE 778
// begin TeamB = TeamB ^ TeamA [ i ] ;
 731: LD_ADDR_EXP 8
 735: PUSH
 736: LD_EXP 8
 740: PUSH
 741: LD_EXP 7
 745: PUSH
 746: LD_VAR 0 1
 750: ARRAY
 751: ADD
 752: ST_TO_ADDR
// TeamA := Replace ( TeamA , i ,  ) ;
 753: LD_ADDR_EXP 7
 757: PUSH
 758: LD_EXP 7
 762: PPUSH
 763: LD_VAR 0 1
 767: PPUSH
 768: LD_STRING 
 770: PPUSH
 771: CALL_OW 1
 775: ST_TO_ADDR
// end ;
 776: GO 728
 778: POP
 779: POP
// if TeamB > 3 then
 780: LD_EXP 8
 784: PUSH
 785: LD_INT 3
 787: GREATER
 788: IFFALSE 857
// for i = 4 to TeamB do
 790: LD_ADDR_VAR 0 1
 794: PUSH
 795: DOUBLE
 796: LD_INT 4
 798: DEC
 799: ST_TO_ADDR
 800: LD_EXP 8
 804: PUSH
 805: FOR_TO
 806: IFFALSE 855
// begin TeamA = TeamA ^ TeamB [ i ] ;
 808: LD_ADDR_EXP 7
 812: PUSH
 813: LD_EXP 7
 817: PUSH
 818: LD_EXP 8
 822: PUSH
 823: LD_VAR 0 1
 827: ARRAY
 828: ADD
 829: ST_TO_ADDR
// TeamB := Replace ( TeamB , i ,  ) ;
 830: LD_ADDR_EXP 8
 834: PUSH
 835: LD_EXP 8
 839: PPUSH
 840: LD_VAR 0 1
 844: PPUSH
 845: LD_STRING 
 847: PPUSH
 848: CALL_OW 1
 852: ST_TO_ADDR
// end ;
 853: GO 805
 855: POP
 856: POP
// if TeamA > TeamB then
 857: LD_EXP 7
 861: PUSH
 862: LD_EXP 8
 866: GREATER
 867: IFFALSE 1076
// begin for i = 1 to TeamB do
 869: LD_ADDR_VAR 0 1
 873: PUSH
 874: DOUBLE
 875: LD_INT 1
 877: DEC
 878: ST_TO_ADDR
 879: LD_EXP 8
 883: PUSH
 884: FOR_TO
 885: IFFALSE 1074
// begin if TeamA - TeamB = 1 then
 887: LD_EXP 7
 891: PUSH
 892: LD_EXP 8
 896: MINUS
 897: PUSH
 898: LD_INT 1
 900: EQUAL
 901: IFFALSE 1009
// if TeamB = 1 then
 903: LD_EXP 8
 907: PUSH
 908: LD_INT 1
 910: EQUAL
 911: IFFALSE 962
// income := Replace ( income , TeamB [ i ] , income [ TeamB [ i ] ] + 20 ) else
 913: LD_ADDR_EXP 12
 917: PUSH
 918: LD_EXP 12
 922: PPUSH
 923: LD_EXP 8
 927: PUSH
 928: LD_VAR 0 1
 932: ARRAY
 933: PPUSH
 934: LD_EXP 12
 938: PUSH
 939: LD_EXP 8
 943: PUSH
 944: LD_VAR 0 1
 948: ARRAY
 949: ARRAY
 950: PUSH
 951: LD_INT 20
 953: PLUS
 954: PPUSH
 955: CALL_OW 1
 959: ST_TO_ADDR
 960: GO 1009
// income := Replace ( income , TeamB [ i ] , income [ TeamB [ i ] ] + 10 ) ;
 962: LD_ADDR_EXP 12
 966: PUSH
 967: LD_EXP 12
 971: PPUSH
 972: LD_EXP 8
 976: PUSH
 977: LD_VAR 0 1
 981: ARRAY
 982: PPUSH
 983: LD_EXP 12
 987: PUSH
 988: LD_EXP 8
 992: PUSH
 993: LD_VAR 0 1
 997: ARRAY
 998: ARRAY
 999: PUSH
1000: LD_INT 10
1002: PLUS
1003: PPUSH
1004: CALL_OW 1
1008: ST_TO_ADDR
// if TeamA - TeamB = 2 then
1009: LD_EXP 7
1013: PUSH
1014: LD_EXP 8
1018: MINUS
1019: PUSH
1020: LD_INT 2
1022: EQUAL
1023: IFFALSE 1072
// income := Replace ( income , TeamB [ i ] , income [ TeamB [ i ] ] + 40 ) ;
1025: LD_ADDR_EXP 12
1029: PUSH
1030: LD_EXP 12
1034: PPUSH
1035: LD_EXP 8
1039: PUSH
1040: LD_VAR 0 1
1044: ARRAY
1045: PPUSH
1046: LD_EXP 12
1050: PUSH
1051: LD_EXP 8
1055: PUSH
1056: LD_VAR 0 1
1060: ARRAY
1061: ARRAY
1062: PUSH
1063: LD_INT 40
1065: PLUS
1066: PPUSH
1067: CALL_OW 1
1071: ST_TO_ADDR
// end ;
1072: GO 884
1074: POP
1075: POP
// end ; if TeamB > TeamA then
1076: LD_EXP 8
1080: PUSH
1081: LD_EXP 7
1085: GREATER
1086: IFFALSE 1295
// begin for i = 1 to TeamA do
1088: LD_ADDR_VAR 0 1
1092: PUSH
1093: DOUBLE
1094: LD_INT 1
1096: DEC
1097: ST_TO_ADDR
1098: LD_EXP 7
1102: PUSH
1103: FOR_TO
1104: IFFALSE 1293
// begin if TeamB - TeamA = 1 then
1106: LD_EXP 8
1110: PUSH
1111: LD_EXP 7
1115: MINUS
1116: PUSH
1117: LD_INT 1
1119: EQUAL
1120: IFFALSE 1228
// if TeamA = 1 then
1122: LD_EXP 7
1126: PUSH
1127: LD_INT 1
1129: EQUAL
1130: IFFALSE 1181
// income := Replace ( income , TeamA [ i ] , income [ TeamA [ i ] ] + 20 ) else
1132: LD_ADDR_EXP 12
1136: PUSH
1137: LD_EXP 12
1141: PPUSH
1142: LD_EXP 7
1146: PUSH
1147: LD_VAR 0 1
1151: ARRAY
1152: PPUSH
1153: LD_EXP 12
1157: PUSH
1158: LD_EXP 7
1162: PUSH
1163: LD_VAR 0 1
1167: ARRAY
1168: ARRAY
1169: PUSH
1170: LD_INT 20
1172: PLUS
1173: PPUSH
1174: CALL_OW 1
1178: ST_TO_ADDR
1179: GO 1228
// income := Replace ( income , TeamA [ i ] , income [ TeamA [ i ] ] + 10 ) ;
1181: LD_ADDR_EXP 12
1185: PUSH
1186: LD_EXP 12
1190: PPUSH
1191: LD_EXP 7
1195: PUSH
1196: LD_VAR 0 1
1200: ARRAY
1201: PPUSH
1202: LD_EXP 12
1206: PUSH
1207: LD_EXP 7
1211: PUSH
1212: LD_VAR 0 1
1216: ARRAY
1217: ARRAY
1218: PUSH
1219: LD_INT 10
1221: PLUS
1222: PPUSH
1223: CALL_OW 1
1227: ST_TO_ADDR
// if TeamB - TeamA = 2 then
1228: LD_EXP 8
1232: PUSH
1233: LD_EXP 7
1237: MINUS
1238: PUSH
1239: LD_INT 2
1241: EQUAL
1242: IFFALSE 1291
// income := Replace ( income , TeamA [ i ] , income [ TeamA [ i ] ] + 40 ) ;
1244: LD_ADDR_EXP 12
1248: PUSH
1249: LD_EXP 12
1253: PPUSH
1254: LD_EXP 7
1258: PUSH
1259: LD_VAR 0 1
1263: ARRAY
1264: PPUSH
1265: LD_EXP 12
1269: PUSH
1270: LD_EXP 7
1274: PUSH
1275: LD_VAR 0 1
1279: ARRAY
1280: ARRAY
1281: PUSH
1282: LD_INT 40
1284: PLUS
1285: PPUSH
1286: CALL_OW 1
1290: ST_TO_ADDR
// end ;
1291: GO 1103
1293: POP
1294: POP
// end ; start ;
1295: CALL 1941 0 0
// if Multiplayer then
1299: LD_OWVAR 4
1303: IFFALSE 1319
// begin Your_Side := mp_player_side ;
1305: LD_ADDR_OWVAR 2
1309: PUSH
1310: LD_OWVAR 7
1314: ST_TO_ADDR
// set_shared_visions_and_alliances ;
1315: CALL 1320 0 0
// end ; end ;
1319: END
// export function set_shared_visions_and_alliances ; var i , j , Side_Teams , Team_Game , Teams ; begin
1320: LD_INT 0
1322: PPUSH
1323: PPUSH
1324: PPUSH
1325: PPUSH
1326: PPUSH
1327: PPUSH
// Side_Teams := mp_sides_teams ;
1328: LD_ADDR_VAR 0 4
1332: PUSH
1333: LD_OWVAR 15
1337: ST_TO_ADDR
// Team_Game := ( Side_Teams diff [ 0 ] ) > 1 ;
1338: LD_ADDR_VAR 0 5
1342: PUSH
1343: LD_VAR 0 4
1347: PUSH
1348: LD_INT 0
1350: PUSH
1351: EMPTY
1352: LIST
1353: DIFF
1354: PUSH
1355: LD_INT 1
1357: GREATER
1358: ST_TO_ADDR
// Teams := mp_teams ;
1359: LD_ADDR_VAR 0 6
1363: PUSH
1364: LD_OWVAR 12
1368: ST_TO_ADDR
// if not Team_Game then
1369: LD_VAR 0 5
1373: NOT
1374: IFFALSE 1472
// begin for i = 1 to 8 do
1376: LD_ADDR_VAR 0 2
1380: PUSH
1381: DOUBLE
1382: LD_INT 1
1384: DEC
1385: ST_TO_ADDR
1386: LD_INT 8
1388: PUSH
1389: FOR_TO
1390: IFFALSE 1468
// for j = 1 to 8 do
1392: LD_ADDR_VAR 0 3
1396: PUSH
1397: DOUBLE
1398: LD_INT 1
1400: DEC
1401: ST_TO_ADDR
1402: LD_INT 8
1404: PUSH
1405: FOR_TO
1406: IFFALSE 1464
// if i <> j then
1408: LD_VAR 0 2
1412: PUSH
1413: LD_VAR 0 3
1417: NONEQUAL
1418: IFFALSE 1442
// SetAttitude ( i , j , att_neutral , true ) else
1420: LD_VAR 0 2
1424: PPUSH
1425: LD_VAR 0 3
1429: PPUSH
1430: LD_INT 0
1432: PPUSH
1433: LD_INT 1
1435: PPUSH
1436: CALL_OW 80
1440: GO 1462
// SetAttitude ( i , j , att_friend , true ) ;
1442: LD_VAR 0 2
1446: PPUSH
1447: LD_VAR 0 3
1451: PPUSH
1452: LD_INT 1
1454: PPUSH
1455: LD_INT 1
1457: PPUSH
1458: CALL_OW 80
1462: GO 1405
1464: POP
1465: POP
1466: GO 1389
1468: POP
1469: POP
// end else
1470: GO 1936
// begin if mp_game_type = 1 then
1472: LD_OWVAR 6
1476: PUSH
1477: LD_INT 1
1479: EQUAL
1480: IFFALSE 1596
// begin for i = 1 to TeamA do
1482: LD_ADDR_VAR 0 2
1486: PUSH
1487: DOUBLE
1488: LD_INT 1
1490: DEC
1491: ST_TO_ADDR
1492: LD_EXP 7
1496: PUSH
1497: FOR_TO
1498: IFFALSE 1520
// ChangeSideFog ( TeamA [ i ] , 1 ) ;
1500: LD_EXP 7
1504: PUSH
1505: LD_VAR 0 2
1509: ARRAY
1510: PPUSH
1511: LD_INT 1
1513: PPUSH
1514: CALL_OW 343
1518: GO 1497
1520: POP
1521: POP
// for i = 1 to TeamB do
1522: LD_ADDR_VAR 0 2
1526: PUSH
1527: DOUBLE
1528: LD_INT 1
1530: DEC
1531: ST_TO_ADDR
1532: LD_EXP 8
1536: PUSH
1537: FOR_TO
1538: IFFALSE 1560
// ChangeSideFog ( TeamB [ i ] , 2 ) ;
1540: LD_EXP 8
1544: PUSH
1545: LD_VAR 0 2
1549: ARRAY
1550: PPUSH
1551: LD_INT 2
1553: PPUSH
1554: CALL_OW 343
1558: GO 1537
1560: POP
1561: POP
// ChangeSideFog ( freesides [ 1 ] , 1 ) ;
1562: LD_EXP 4
1566: PUSH
1567: LD_INT 1
1569: ARRAY
1570: PPUSH
1571: LD_INT 1
1573: PPUSH
1574: CALL_OW 343
// ChangeSideFog ( freesides [ 2 ] , 2 ) ;
1578: LD_EXP 4
1582: PUSH
1583: LD_INT 2
1585: ARRAY
1586: PPUSH
1587: LD_INT 2
1589: PPUSH
1590: CALL_OW 343
// end else
1594: GO 1686
// if mp_game_type = 2 then
1596: LD_OWVAR 6
1600: PUSH
1601: LD_INT 2
1603: EQUAL
1604: IFFALSE 1686
// begin for i = 1 to playersides do
1606: LD_ADDR_VAR 0 2
1610: PUSH
1611: DOUBLE
1612: LD_INT 1
1614: DEC
1615: ST_TO_ADDR
1616: LD_EXP 5
1620: PUSH
1621: FOR_TO
1622: IFFALSE 1644
// ChangeSideFog ( playersides [ i ] , 1 ) ;
1624: LD_EXP 5
1628: PUSH
1629: LD_VAR 0 2
1633: ARRAY
1634: PPUSH
1635: LD_INT 1
1637: PPUSH
1638: CALL_OW 343
1642: GO 1621
1644: POP
1645: POP
// for i = 1 to freesides do
1646: LD_ADDR_VAR 0 2
1650: PUSH
1651: DOUBLE
1652: LD_INT 1
1654: DEC
1655: ST_TO_ADDR
1656: LD_EXP 4
1660: PUSH
1661: FOR_TO
1662: IFFALSE 1684
// ChangeSideFog ( freesides [ i ] , 2 ) ;
1664: LD_EXP 4
1668: PUSH
1669: LD_VAR 0 2
1673: ARRAY
1674: PPUSH
1675: LD_INT 2
1677: PPUSH
1678: CALL_OW 343
1682: GO 1661
1684: POP
1685: POP
// end ; if mp_game_type = 1 then
1686: LD_OWVAR 6
1690: PUSH
1691: LD_INT 1
1693: EQUAL
1694: IFFALSE 1850
// begin for i = 1 to TeamA do
1696: LD_ADDR_VAR 0 2
1700: PUSH
1701: DOUBLE
1702: LD_INT 1
1704: DEC
1705: ST_TO_ADDR
1706: LD_EXP 7
1710: PUSH
1711: FOR_TO
1712: IFFALSE 1770
// for j = 1 to TeamA do
1714: LD_ADDR_VAR 0 3
1718: PUSH
1719: DOUBLE
1720: LD_INT 1
1722: DEC
1723: ST_TO_ADDR
1724: LD_EXP 7
1728: PUSH
1729: FOR_TO
1730: IFFALSE 1766
// SetAttitude ( TeamA [ i ] , TeamA [ j ] , att_friend , true ) ;
1732: LD_EXP 7
1736: PUSH
1737: LD_VAR 0 2
1741: ARRAY
1742: PPUSH
1743: LD_EXP 7
1747: PUSH
1748: LD_VAR 0 3
1752: ARRAY
1753: PPUSH
1754: LD_INT 1
1756: PPUSH
1757: LD_INT 1
1759: PPUSH
1760: CALL_OW 80
1764: GO 1729
1766: POP
1767: POP
1768: GO 1711
1770: POP
1771: POP
// for i = 1 to TeamB do
1772: LD_ADDR_VAR 0 2
1776: PUSH
1777: DOUBLE
1778: LD_INT 1
1780: DEC
1781: ST_TO_ADDR
1782: LD_EXP 8
1786: PUSH
1787: FOR_TO
1788: IFFALSE 1846
// for j = 1 to TeamB do
1790: LD_ADDR_VAR 0 3
1794: PUSH
1795: DOUBLE
1796: LD_INT 1
1798: DEC
1799: ST_TO_ADDR
1800: LD_EXP 8
1804: PUSH
1805: FOR_TO
1806: IFFALSE 1842
// SetAttitude ( TeamB [ i ] , TeamB [ j ] , att_friend , true ) ;
1808: LD_EXP 8
1812: PUSH
1813: LD_VAR 0 2
1817: ARRAY
1818: PPUSH
1819: LD_EXP 8
1823: PUSH
1824: LD_VAR 0 3
1828: ARRAY
1829: PPUSH
1830: LD_INT 1
1832: PPUSH
1833: LD_INT 1
1835: PPUSH
1836: CALL_OW 80
1840: GO 1805
1842: POP
1843: POP
1844: GO 1787
1846: POP
1847: POP
// end else
1848: GO 1936
// if mp_game_type = 2 then
1850: LD_OWVAR 6
1854: PUSH
1855: LD_INT 2
1857: EQUAL
1858: IFFALSE 1936
// for i = 1 to freesides do
1860: LD_ADDR_VAR 0 2
1864: PUSH
1865: DOUBLE
1866: LD_INT 1
1868: DEC
1869: ST_TO_ADDR
1870: LD_EXP 4
1874: PUSH
1875: FOR_TO
1876: IFFALSE 1934
// for j = 1 to freesides do
1878: LD_ADDR_VAR 0 3
1882: PUSH
1883: DOUBLE
1884: LD_INT 1
1886: DEC
1887: ST_TO_ADDR
1888: LD_EXP 4
1892: PUSH
1893: FOR_TO
1894: IFFALSE 1930
// SetAttitude ( freesides [ i ] , freesides [ j ] , att_friend , true ) ;
1896: LD_EXP 4
1900: PUSH
1901: LD_VAR 0 2
1905: ARRAY
1906: PPUSH
1907: LD_EXP 4
1911: PUSH
1912: LD_VAR 0 3
1916: ARRAY
1917: PPUSH
1918: LD_INT 1
1920: PPUSH
1921: LD_INT 1
1923: PPUSH
1924: CALL_OW 80
1928: GO 1893
1930: POP
1931: POP
1932: GO 1875
1934: POP
1935: POP
// end ; end ;
1936: LD_VAR 0 1
1940: RET
// export function start ; var k , i , bases , l , j , y , n , cls , id , outside , names , v ; begin
1941: LD_INT 0
1943: PPUSH
1944: PPUSH
1945: PPUSH
1946: PPUSH
1947: PPUSH
1948: PPUSH
1949: PPUSH
1950: PPUSH
1951: PPUSH
1952: PPUSH
1953: PPUSH
1954: PPUSH
1955: PPUSH
// bases = [ [ 28 + 7 , 56 ] , [ 50 , 86 ] , [ 20 , 26 ] , [ 72 + 7 , 144 ] , [ 64 , 114 ] , [ 94 , 174 ] ] ;
1956: LD_ADDR_VAR 0 4
1960: PUSH
1961: LD_INT 28
1963: PUSH
1964: LD_INT 7
1966: PLUS
1967: PUSH
1968: LD_INT 56
1970: PUSH
1971: EMPTY
1972: LIST
1973: LIST
1974: PUSH
1975: LD_INT 50
1977: PUSH
1978: LD_INT 86
1980: PUSH
1981: EMPTY
1982: LIST
1983: LIST
1984: PUSH
1985: LD_INT 20
1987: PUSH
1988: LD_INT 26
1990: PUSH
1991: EMPTY
1992: LIST
1993: LIST
1994: PUSH
1995: LD_INT 72
1997: PUSH
1998: LD_INT 7
2000: PLUS
2001: PUSH
2002: LD_INT 144
2004: PUSH
2005: EMPTY
2006: LIST
2007: LIST
2008: PUSH
2009: LD_INT 64
2011: PUSH
2012: LD_INT 114
2014: PUSH
2015: EMPTY
2016: LIST
2017: LIST
2018: PUSH
2019: LD_INT 94
2021: PUSH
2022: LD_INT 174
2024: PUSH
2025: EMPTY
2026: LIST
2027: LIST
2028: PUSH
2029: EMPTY
2030: LIST
2031: LIST
2032: LIST
2033: LIST
2034: LIST
2035: LIST
2036: ST_TO_ADDR
// outside = [ [ 8 , 4 ] , [ 103 , 194 ] ] ;
2037: LD_ADDR_VAR 0 11
2041: PUSH
2042: LD_INT 8
2044: PUSH
2045: LD_INT 4
2047: PUSH
2048: EMPTY
2049: LIST
2050: LIST
2051: PUSH
2052: LD_INT 103
2054: PUSH
2055: LD_INT 194
2057: PUSH
2058: EMPTY
2059: LIST
2060: LIST
2061: PUSH
2062: EMPTY
2063: LIST
2064: LIST
2065: ST_TO_ADDR
// bs = [ 26 , 28 , 5 , 3 , 9 , 12 , 10 , 11 , 33 , 2 , 32 , 34 , 37 , 27 , 13 ] ;
2066: LD_ADDR_EXP 11
2070: PUSH
2071: LD_INT 26
2073: PUSH
2074: LD_INT 28
2076: PUSH
2077: LD_INT 5
2079: PUSH
2080: LD_INT 3
2082: PUSH
2083: LD_INT 9
2085: PUSH
2086: LD_INT 12
2088: PUSH
2089: LD_INT 10
2091: PUSH
2092: LD_INT 11
2094: PUSH
2095: LD_INT 33
2097: PUSH
2098: LD_INT 2
2100: PUSH
2101: LD_INT 32
2103: PUSH
2104: LD_INT 34
2106: PUSH
2107: LD_INT 37
2109: PUSH
2110: LD_INT 27
2112: PUSH
2113: LD_INT 13
2115: PUSH
2116: EMPTY
2117: LIST
2118: LIST
2119: LIST
2120: LIST
2121: LIST
2122: LIST
2123: LIST
2124: LIST
2125: LIST
2126: LIST
2127: LIST
2128: LIST
2129: LIST
2130: LIST
2131: LIST
2132: ST_TO_ADDR
// names = [ oil , sib , arm , wor , bas , com , wea , ara , las , ai , mon , tim , kil , sol , sold ] ;
2133: LD_ADDR_VAR 0 12
2137: PUSH
2138: LD_STRING oil
2140: PUSH
2141: LD_STRING sib
2143: PUSH
2144: LD_STRING arm
2146: PUSH
2147: LD_STRING wor
2149: PUSH
2150: LD_STRING bas
2152: PUSH
2153: LD_STRING com
2155: PUSH
2156: LD_STRING wea
2158: PUSH
2159: LD_STRING ara
2161: PUSH
2162: LD_STRING las
2164: PUSH
2165: LD_STRING ai
2167: PUSH
2168: LD_STRING mon
2170: PUSH
2171: LD_STRING tim
2173: PUSH
2174: LD_STRING kil
2176: PUSH
2177: LD_STRING sol
2179: PUSH
2180: LD_STRING sold
2182: PUSH
2183: EMPTY
2184: LIST
2185: LIST
2186: LIST
2187: LIST
2188: LIST
2189: LIST
2190: LIST
2191: LIST
2192: LIST
2193: LIST
2194: LIST
2195: LIST
2196: LIST
2197: LIST
2198: LIST
2199: ST_TO_ADDR
// n = 10 ;
2200: LD_ADDR_VAR 0 8
2204: PUSH
2205: LD_INT 10
2207: ST_TO_ADDR
// cls = [ 1 , 2 , 3 , 4 ] ;
2208: LD_ADDR_VAR 0 9
2212: PUSH
2213: LD_INT 1
2215: PUSH
2216: LD_INT 2
2218: PUSH
2219: LD_INT 3
2221: PUSH
2222: LD_INT 4
2224: PUSH
2225: EMPTY
2226: LIST
2227: LIST
2228: LIST
2229: LIST
2230: ST_TO_ADDR
// if Multiplayer then
2231: LD_OWVAR 4
2235: IFFALSE 2300
// begin if GetMultiplayerSetting ( 1 ) = 0 then
2237: LD_INT 1
2239: PPUSH
2240: CALL_OW 426
2244: PUSH
2245: LD_INT 0
2247: EQUAL
2248: IFFALSE 2258
// n = 7 ;
2250: LD_ADDR_VAR 0 8
2254: PUSH
2255: LD_INT 7
2257: ST_TO_ADDR
// if GetMultiplayerSetting ( 1 ) = 1 then
2258: LD_INT 1
2260: PPUSH
2261: CALL_OW 426
2265: PUSH
2266: LD_INT 1
2268: EQUAL
2269: IFFALSE 2279
// n = 10 ;
2271: LD_ADDR_VAR 0 8
2275: PUSH
2276: LD_INT 10
2278: ST_TO_ADDR
// if GetMultiplayerSetting ( 1 ) = 2 then
2279: LD_INT 1
2281: PPUSH
2282: CALL_OW 426
2286: PUSH
2287: LD_INT 2
2289: EQUAL
2290: IFFALSE 2300
// n = 13 ;
2292: LD_ADDR_VAR 0 8
2296: PUSH
2297: LD_INT 13
2299: ST_TO_ADDR
// end ; for i = 1 to 2 do
2300: LD_ADDR_VAR 0 3
2304: PUSH
2305: DOUBLE
2306: LD_INT 1
2308: DEC
2309: ST_TO_ADDR
2310: LD_INT 2
2312: PUSH
2313: FOR_TO
2314: IFFALSE 2519
// begin bc_level = 0 ;
2316: LD_ADDR_OWVAR 43
2320: PUSH
2321: LD_INT 0
2323: ST_TO_ADDR
// uc_nation = 3 ;
2324: LD_ADDR_OWVAR 21
2328: PUSH
2329: LD_INT 3
2331: ST_TO_ADDR
// y = outside [ i ] [ 1 ] ;
2332: LD_ADDR_VAR 0 7
2336: PUSH
2337: LD_VAR 0 11
2341: PUSH
2342: LD_VAR 0 3
2346: ARRAY
2347: PUSH
2348: LD_INT 1
2350: ARRAY
2351: ST_TO_ADDR
// for l = 1 to bs do
2352: LD_ADDR_VAR 0 5
2356: PUSH
2357: DOUBLE
2358: LD_INT 1
2360: DEC
2361: ST_TO_ADDR
2362: LD_EXP 11
2366: PUSH
2367: FOR_TO
2368: IFFALSE 2515
// begin bc_type = bs [ l ] ;
2370: LD_ADDR_OWVAR 42
2374: PUSH
2375: LD_EXP 11
2379: PUSH
2380: LD_VAR 0 5
2384: ARRAY
2385: ST_TO_ADDR
// if bc_type = 27 then
2386: LD_OWVAR 42
2390: PUSH
2391: LD_INT 27
2393: EQUAL
2394: IFFALSE 2404
// uc_nation = 1 ;
2396: LD_ADDR_OWVAR 21
2400: PUSH
2401: LD_INT 1
2403: ST_TO_ADDR
// if bc_type = 13 then
2404: LD_OWVAR 42
2408: PUSH
2409: LD_INT 13
2411: EQUAL
2412: IFFALSE 2422
// uc_nation = 2 ;
2414: LD_ADDR_OWVAR 21
2418: PUSH
2419: LD_INT 2
2421: ST_TO_ADDR
// uc_side = freesides [ i ] ;
2422: LD_ADDR_OWVAR 20
2426: PUSH
2427: LD_EXP 4
2431: PUSH
2432: LD_VAR 0 3
2436: ARRAY
2437: ST_TO_ADDR
// k = CreateAndPlaceBuildingXYD ( y , outside [ i ] [ 2 ] , 1 ) ;
2438: LD_ADDR_VAR 0 2
2442: PUSH
2443: LD_VAR 0 7
2447: PPUSH
2448: LD_VAR 0 11
2452: PUSH
2453: LD_VAR 0 3
2457: ARRAY
2458: PUSH
2459: LD_INT 2
2461: ARRAY
2462: PPUSH
2463: LD_INT 1
2465: PPUSH
2466: CALL_OW 47
2470: ST_TO_ADDR
// SetBName ( k , names [ l ] ) ;
2471: LD_VAR 0 2
2475: PPUSH
2476: LD_VAR 0 12
2480: PUSH
2481: LD_VAR 0 5
2485: ARRAY
2486: PPUSH
2487: CALL_OW 500
// uc_nation = 3 ;
2491: LD_ADDR_OWVAR 21
2495: PUSH
2496: LD_INT 3
2498: ST_TO_ADDR
// y = y + 8 ;
2499: LD_ADDR_VAR 0 7
2503: PUSH
2504: LD_VAR 0 7
2508: PUSH
2509: LD_INT 8
2511: PLUS
2512: ST_TO_ADDR
// end ;
2513: GO 2367
2515: POP
2516: POP
// end ;
2517: GO 2313
2519: POP
2520: POP
// for l = 1 to playersides do
2521: LD_ADDR_VAR 0 5
2525: PUSH
2526: DOUBLE
2527: LD_INT 1
2529: DEC
2530: ST_TO_ADDR
2531: LD_EXP 5
2535: PUSH
2536: FOR_TO
2537: IFFALSE 3239
// begin bc_type = 0 ;
2539: LD_ADDR_OWVAR 42
2543: PUSH
2544: LD_INT 0
2546: ST_TO_ADDR
// bc_level = 0 ;
2547: LD_ADDR_OWVAR 43
2551: PUSH
2552: LD_INT 0
2554: ST_TO_ADDR
// uc_nation = mp_sides_nations [ playersides [ l ] ] ;
2555: LD_ADDR_OWVAR 21
2559: PUSH
2560: LD_OWVAR 16
2564: PUSH
2565: LD_EXP 5
2569: PUSH
2570: LD_VAR 0 5
2574: ARRAY
2575: ARRAY
2576: ST_TO_ADDR
// for i = 1 to TeamA do
2577: LD_ADDR_VAR 0 3
2581: PUSH
2582: DOUBLE
2583: LD_INT 1
2585: DEC
2586: ST_TO_ADDR
2587: LD_EXP 7
2591: PUSH
2592: FOR_TO
2593: IFFALSE 2897
// if TeamA [ i ] = playersides [ l ] then
2595: LD_EXP 7
2599: PUSH
2600: LD_VAR 0 3
2604: ARRAY
2605: PUSH
2606: LD_EXP 5
2610: PUSH
2611: LD_VAR 0 5
2615: ARRAY
2616: EQUAL
2617: IFFALSE 2895
// begin uc_side = TeamA [ i ] ;
2619: LD_ADDR_OWVAR 20
2623: PUSH
2624: LD_EXP 7
2628: PUSH
2629: LD_VAR 0 3
2633: ARRAY
2634: ST_TO_ADDR
// v = CreateAndPlaceBuildingXYD ( bases [ i ] [ 1 ] , bases [ i ] [ 2 ] , 1 ) ;
2635: LD_ADDR_VAR 0 13
2639: PUSH
2640: LD_VAR 0 4
2644: PUSH
2645: LD_VAR 0 3
2649: ARRAY
2650: PUSH
2651: LD_INT 1
2653: ARRAY
2654: PPUSH
2655: LD_VAR 0 4
2659: PUSH
2660: LD_VAR 0 3
2664: ARRAY
2665: PUSH
2666: LD_INT 2
2668: ARRAY
2669: PPUSH
2670: LD_INT 1
2672: PPUSH
2673: CALL_OW 47
2677: ST_TO_ADDR
// MoveAreaXY ( spawningarea , bases [ i ] [ 1 ] + 10 , bases [ i ] [ 2 ] ) ;
2678: LD_INT 5
2680: PPUSH
2681: LD_VAR 0 4
2685: PUSH
2686: LD_VAR 0 3
2690: ARRAY
2691: PUSH
2692: LD_INT 1
2694: ARRAY
2695: PUSH
2696: LD_INT 10
2698: PLUS
2699: PPUSH
2700: LD_VAR 0 4
2704: PUSH
2705: LD_VAR 0 3
2709: ARRAY
2710: PUSH
2711: LD_INT 2
2713: ARRAY
2714: PPUSH
2715: CALL_OW 425
// SetResourceType ( GetBase ( v ) , 1 , 50 ) ;
2719: LD_VAR 0 13
2723: PPUSH
2724: CALL_OW 274
2728: PPUSH
2729: LD_INT 1
2731: PPUSH
2732: LD_INT 50
2734: PPUSH
2735: CALL_OW 277
// for y = 1 to n do
2739: LD_ADDR_VAR 0 7
2743: PUSH
2744: DOUBLE
2745: LD_INT 1
2747: DEC
2748: ST_TO_ADDR
2749: LD_VAR 0 8
2753: PUSH
2754: FOR_TO
2755: IFFALSE 2893
// begin uc_side = playersides [ l ] ;
2757: LD_ADDR_OWVAR 20
2761: PUSH
2762: LD_EXP 5
2766: PUSH
2767: LD_VAR 0 5
2771: ARRAY
2772: ST_TO_ADDR
// uc_nation = mp_sides_nations [ playersides [ l ] ] ;
2773: LD_ADDR_OWVAR 21
2777: PUSH
2778: LD_OWVAR 16
2782: PUSH
2783: LD_EXP 5
2787: PUSH
2788: LD_VAR 0 5
2792: ARRAY
2793: ARRAY
2794: ST_TO_ADDR
// hc_name =  ;
2795: LD_ADDR_OWVAR 26
2799: PUSH
2800: LD_STRING 
2802: ST_TO_ADDR
// hc_class = cls [ y mod 5 ] ;
2803: LD_ADDR_OWVAR 28
2807: PUSH
2808: LD_VAR 0 9
2812: PUSH
2813: LD_VAR 0 7
2817: PUSH
2818: LD_INT 5
2820: MOD
2821: ARRAY
2822: ST_TO_ADDR
// hc_sex = rand ( sex_male , sex_female ) ;
2823: LD_ADDR_OWVAR 27
2827: PUSH
2828: LD_INT 1
2830: PPUSH
2831: LD_INT 2
2833: PPUSH
2834: CALL_OW 12
2838: ST_TO_ADDR
// id = createhuman ;
2839: LD_ADDR_VAR 0 10
2843: PUSH
2844: CALL_OW 44
2848: ST_TO_ADDR
// PlaceUnitArea ( id , spawningarea , false ) ;
2849: LD_VAR 0 10
2853: PPUSH
2854: LD_INT 5
2856: PPUSH
2857: LD_INT 0
2859: PPUSH
2860: CALL_OW 49
// if your_side = playersides [ l ] then
2864: LD_OWVAR 2
2868: PUSH
2869: LD_EXP 5
2873: PUSH
2874: LD_VAR 0 5
2878: ARRAY
2879: EQUAL
2880: IFFALSE 2891
// CenterNowOnUnits ( id ) ;
2882: LD_VAR 0 10
2886: PPUSH
2887: CALL_OW 87
// end ;
2891: GO 2754
2893: POP
2894: POP
// end ;
2895: GO 2592
2897: POP
2898: POP
// for i = 1 to TeamB do
2899: LD_ADDR_VAR 0 3
2903: PUSH
2904: DOUBLE
2905: LD_INT 1
2907: DEC
2908: ST_TO_ADDR
2909: LD_EXP 8
2913: PUSH
2914: FOR_TO
2915: IFFALSE 3235
// if TeamB [ i ] = playersides [ l ] then
2917: LD_EXP 8
2921: PUSH
2922: LD_VAR 0 3
2926: ARRAY
2927: PUSH
2928: LD_EXP 5
2932: PUSH
2933: LD_VAR 0 5
2937: ARRAY
2938: EQUAL
2939: IFFALSE 3233
// begin uc_side = TeamB [ i ] ;
2941: LD_ADDR_OWVAR 20
2945: PUSH
2946: LD_EXP 8
2950: PUSH
2951: LD_VAR 0 3
2955: ARRAY
2956: ST_TO_ADDR
// v = CreateAndPlaceBuildingXYD ( bases [ i + 3 ] [ 1 ] , bases [ i + 3 ] [ 2 ] , 1 ) ;
2957: LD_ADDR_VAR 0 13
2961: PUSH
2962: LD_VAR 0 4
2966: PUSH
2967: LD_VAR 0 3
2971: PUSH
2972: LD_INT 3
2974: PLUS
2975: ARRAY
2976: PUSH
2977: LD_INT 1
2979: ARRAY
2980: PPUSH
2981: LD_VAR 0 4
2985: PUSH
2986: LD_VAR 0 3
2990: PUSH
2991: LD_INT 3
2993: PLUS
2994: ARRAY
2995: PUSH
2996: LD_INT 2
2998: ARRAY
2999: PPUSH
3000: LD_INT 1
3002: PPUSH
3003: CALL_OW 47
3007: ST_TO_ADDR
// MoveAreaXY ( spawningarea , bases [ i + 3 ] [ 1 ] + 10 , bases [ i + 3 ] [ 2 ] ) ;
3008: LD_INT 5
3010: PPUSH
3011: LD_VAR 0 4
3015: PUSH
3016: LD_VAR 0 3
3020: PUSH
3021: LD_INT 3
3023: PLUS
3024: ARRAY
3025: PUSH
3026: LD_INT 1
3028: ARRAY
3029: PUSH
3030: LD_INT 10
3032: PLUS
3033: PPUSH
3034: LD_VAR 0 4
3038: PUSH
3039: LD_VAR 0 3
3043: PUSH
3044: LD_INT 3
3046: PLUS
3047: ARRAY
3048: PUSH
3049: LD_INT 2
3051: ARRAY
3052: PPUSH
3053: CALL_OW 425
// SetResourceType ( GetBase ( v ) , 1 , 50 ) ;
3057: LD_VAR 0 13
3061: PPUSH
3062: CALL_OW 274
3066: PPUSH
3067: LD_INT 1
3069: PPUSH
3070: LD_INT 50
3072: PPUSH
3073: CALL_OW 277
// for y = 1 to n do
3077: LD_ADDR_VAR 0 7
3081: PUSH
3082: DOUBLE
3083: LD_INT 1
3085: DEC
3086: ST_TO_ADDR
3087: LD_VAR 0 8
3091: PUSH
3092: FOR_TO
3093: IFFALSE 3231
// begin uc_side = playersides [ l ] ;
3095: LD_ADDR_OWVAR 20
3099: PUSH
3100: LD_EXP 5
3104: PUSH
3105: LD_VAR 0 5
3109: ARRAY
3110: ST_TO_ADDR
// uc_nation = mp_sides_nations [ playersides [ l ] ] ;
3111: LD_ADDR_OWVAR 21
3115: PUSH
3116: LD_OWVAR 16
3120: PUSH
3121: LD_EXP 5
3125: PUSH
3126: LD_VAR 0 5
3130: ARRAY
3131: ARRAY
3132: ST_TO_ADDR
// hc_name =  ;
3133: LD_ADDR_OWVAR 26
3137: PUSH
3138: LD_STRING 
3140: ST_TO_ADDR
// hc_class = cls [ y mod 5 ] ;
3141: LD_ADDR_OWVAR 28
3145: PUSH
3146: LD_VAR 0 9
3150: PUSH
3151: LD_VAR 0 7
3155: PUSH
3156: LD_INT 5
3158: MOD
3159: ARRAY
3160: ST_TO_ADDR
// hc_sex = rand ( sex_male , sex_female ) ;
3161: LD_ADDR_OWVAR 27
3165: PUSH
3166: LD_INT 1
3168: PPUSH
3169: LD_INT 2
3171: PPUSH
3172: CALL_OW 12
3176: ST_TO_ADDR
// id = createhuman ;
3177: LD_ADDR_VAR 0 10
3181: PUSH
3182: CALL_OW 44
3186: ST_TO_ADDR
// PlaceUnitArea ( id , spawningarea , false ) ;
3187: LD_VAR 0 10
3191: PPUSH
3192: LD_INT 5
3194: PPUSH
3195: LD_INT 0
3197: PPUSH
3198: CALL_OW 49
// if your_side = playersides [ l ] then
3202: LD_OWVAR 2
3206: PUSH
3207: LD_EXP 5
3211: PUSH
3212: LD_VAR 0 5
3216: ARRAY
3217: EQUAL
3218: IFFALSE 3229
// CenterNowOnUnits ( id ) ;
3220: LD_VAR 0 10
3224: PPUSH
3225: CALL_OW 87
// end ;
3229: GO 3092
3231: POP
3232: POP
// end ;
3233: GO 2914
3235: POP
3236: POP
// end ;
3237: GO 2536
3239: POP
3240: POP
// PlaceTreesToArea ( Area01 , [ 21 , 22 , 23 ] , 1000 , 100 , 1 ) ;
3241: LD_INT 1
3243: PPUSH
3244: LD_INT 21
3246: PUSH
3247: LD_INT 22
3249: PUSH
3250: LD_INT 23
3252: PUSH
3253: EMPTY
3254: LIST
3255: LIST
3256: LIST
3257: PPUSH
3258: LD_INT 1000
3260: PPUSH
3261: LD_INT 100
3263: PPUSH
3264: LD_INT 1
3266: PPUSH
3267: CALL_OW 352
// SetAreaMapShow ( Area01 , 1 ) ;
3271: LD_INT 1
3273: PPUSH
3274: LD_INT 1
3276: PPUSH
3277: CALL_OW 424
// MoveAreaXY ( Area01 , 50 - 44 , 12 ) ;
3281: LD_INT 1
3283: PPUSH
3284: LD_INT 50
3286: PUSH
3287: LD_INT 44
3289: MINUS
3290: PPUSH
3291: LD_INT 12
3293: PPUSH
3294: CALL_OW 425
// PlaceTreesToArea ( Area01 , [ 21 , 22 , 23 ] , 1000 , 100 , 1 ) ;
3298: LD_INT 1
3300: PPUSH
3301: LD_INT 21
3303: PUSH
3304: LD_INT 22
3306: PUSH
3307: LD_INT 23
3309: PUSH
3310: EMPTY
3311: LIST
3312: LIST
3313: LIST
3314: PPUSH
3315: LD_INT 1000
3317: PPUSH
3318: LD_INT 100
3320: PPUSH
3321: LD_INT 1
3323: PPUSH
3324: CALL_OW 352
// SetAreaMapShow ( Area01 , 1 ) ;
3328: LD_INT 1
3330: PPUSH
3331: LD_INT 1
3333: PPUSH
3334: CALL_OW 424
// MoveAreaXY ( Area01 , 50 + 44 , 188 ) ;
3338: LD_INT 1
3340: PPUSH
3341: LD_INT 50
3343: PUSH
3344: LD_INT 44
3346: PLUS
3347: PPUSH
3348: LD_INT 188
3350: PPUSH
3351: CALL_OW 425
// PlaceTreesToArea ( Area01 , [ 21 , 22 , 23 ] , 1000 , 100 , 1 ) ;
3355: LD_INT 1
3357: PPUSH
3358: LD_INT 21
3360: PUSH
3361: LD_INT 22
3363: PUSH
3364: LD_INT 23
3366: PUSH
3367: EMPTY
3368: LIST
3369: LIST
3370: LIST
3371: PPUSH
3372: LD_INT 1000
3374: PPUSH
3375: LD_INT 100
3377: PPUSH
3378: LD_INT 1
3380: PPUSH
3381: CALL_OW 352
// SetAreaMapShow ( Area01 , 1 ) ;
3385: LD_INT 1
3387: PPUSH
3388: LD_INT 1
3390: PPUSH
3391: CALL_OW 424
// end ;
3395: LD_VAR 0 1
3399: RET
// every 0 0$01 trigger FilterAllUnits ( [ f_weapon , 48 ] ) do var i ;
3400: LD_INT 34
3402: PUSH
3403: LD_INT 48
3405: PUSH
3406: EMPTY
3407: LIST
3408: LIST
3409: PPUSH
3410: CALL_OW 69
3414: IFFALSE 3502
3416: GO 3418
3418: DISABLE
3419: LD_INT 0
3421: PPUSH
// begin for i = 1 to TeamB do
3422: LD_ADDR_VAR 0 1
3426: PUSH
3427: DOUBLE
3428: LD_INT 1
3430: DEC
3431: ST_TO_ADDR
3432: LD_EXP 8
3436: PUSH
3437: FOR_TO
3438: IFFALSE 3460
// ChangeSideFog ( TeamB [ i ] , 1 ) ;
3440: LD_EXP 8
3444: PUSH
3445: LD_VAR 0 1
3449: ARRAY
3450: PPUSH
3451: LD_INT 1
3453: PPUSH
3454: CALL_OW 343
3458: GO 3437
3460: POP
3461: POP
// for i = 1 to freesides do
3462: LD_ADDR_VAR 0 1
3466: PUSH
3467: DOUBLE
3468: LD_INT 1
3470: DEC
3471: ST_TO_ADDR
3472: LD_EXP 4
3476: PUSH
3477: FOR_TO
3478: IFFALSE 3500
// ChangeSideFog ( freesides [ i ] , 1 ) ;
3480: LD_EXP 4
3484: PUSH
3485: LD_VAR 0 1
3489: ARRAY
3490: PPUSH
3491: LD_INT 1
3493: PPUSH
3494: CALL_OW 343
3498: GO 3477
3500: POP
3501: POP
// end ;
3502: PPOPN 1
3504: END
// every 1 1$00 do var i , base , res ;
3505: GO 3507
3507: DISABLE
3508: LD_INT 0
3510: PPUSH
3511: PPUSH
3512: PPUSH
// begin for i = 1 to TeamA do
3513: LD_ADDR_VAR 0 1
3517: PUSH
3518: DOUBLE
3519: LD_INT 1
3521: DEC
3522: ST_TO_ADDR
3523: LD_EXP 7
3527: PUSH
3528: FOR_TO
3529: IFFALSE 3672
// begin base = FilterAllUnits ( [ [ f_side , TeamA [ i ] ] , [ f_or , [ f_btype , b_depot ] , [ f_btype , b_warehouse ] ] ] ) ;
3531: LD_ADDR_VAR 0 2
3535: PUSH
3536: LD_INT 22
3538: PUSH
3539: LD_EXP 7
3543: PUSH
3544: LD_VAR 0 1
3548: ARRAY
3549: PUSH
3550: EMPTY
3551: LIST
3552: LIST
3553: PUSH
3554: LD_INT 2
3556: PUSH
3557: LD_INT 30
3559: PUSH
3560: LD_INT 0
3562: PUSH
3563: EMPTY
3564: LIST
3565: LIST
3566: PUSH
3567: LD_INT 30
3569: PUSH
3570: LD_INT 1
3572: PUSH
3573: EMPTY
3574: LIST
3575: LIST
3576: PUSH
3577: EMPTY
3578: LIST
3579: LIST
3580: LIST
3581: PUSH
3582: EMPTY
3583: LIST
3584: LIST
3585: PPUSH
3586: CALL_OW 69
3590: ST_TO_ADDR
// if base then
3591: LD_VAR 0 2
3595: IFFALSE 3670
// begin base = GetBase ( base [ 1 ] ) ;
3597: LD_ADDR_VAR 0 2
3601: PUSH
3602: LD_VAR 0 2
3606: PUSH
3607: LD_INT 1
3609: ARRAY
3610: PPUSH
3611: CALL_OW 274
3615: ST_TO_ADDR
// res = GetResources ( base ) ;
3616: LD_ADDR_VAR 0 3
3620: PUSH
3621: LD_VAR 0 2
3625: PPUSH
3626: CALL_OW 279
3630: ST_TO_ADDR
// SetResourceType ( base , 1 , res [ 1 ] + income [ TeamA [ i ] ] ) ;
3631: LD_VAR 0 2
3635: PPUSH
3636: LD_INT 1
3638: PPUSH
3639: LD_VAR 0 3
3643: PUSH
3644: LD_INT 1
3646: ARRAY
3647: PUSH
3648: LD_EXP 12
3652: PUSH
3653: LD_EXP 7
3657: PUSH
3658: LD_VAR 0 1
3662: ARRAY
3663: ARRAY
3664: PLUS
3665: PPUSH
3666: CALL_OW 277
// end ; end ;
3670: GO 3528
3672: POP
3673: POP
// for i = 1 to TeamB do
3674: LD_ADDR_VAR 0 1
3678: PUSH
3679: DOUBLE
3680: LD_INT 1
3682: DEC
3683: ST_TO_ADDR
3684: LD_EXP 8
3688: PUSH
3689: FOR_TO
3690: IFFALSE 3833
// begin base = FilterAllUnits ( [ [ f_side , TeamB [ i ] ] , [ f_or , [ f_btype , b_depot ] , [ f_btype , b_warehouse ] ] ] ) ;
3692: LD_ADDR_VAR 0 2
3696: PUSH
3697: LD_INT 22
3699: PUSH
3700: LD_EXP 8
3704: PUSH
3705: LD_VAR 0 1
3709: ARRAY
3710: PUSH
3711: EMPTY
3712: LIST
3713: LIST
3714: PUSH
3715: LD_INT 2
3717: PUSH
3718: LD_INT 30
3720: PUSH
3721: LD_INT 0
3723: PUSH
3724: EMPTY
3725: LIST
3726: LIST
3727: PUSH
3728: LD_INT 30
3730: PUSH
3731: LD_INT 1
3733: PUSH
3734: EMPTY
3735: LIST
3736: LIST
3737: PUSH
3738: EMPTY
3739: LIST
3740: LIST
3741: LIST
3742: PUSH
3743: EMPTY
3744: LIST
3745: LIST
3746: PPUSH
3747: CALL_OW 69
3751: ST_TO_ADDR
// if base then
3752: LD_VAR 0 2
3756: IFFALSE 3831
// begin base = GetBase ( base [ 1 ] ) ;
3758: LD_ADDR_VAR 0 2
3762: PUSH
3763: LD_VAR 0 2
3767: PUSH
3768: LD_INT 1
3770: ARRAY
3771: PPUSH
3772: CALL_OW 274
3776: ST_TO_ADDR
// res = GetResources ( base ) ;
3777: LD_ADDR_VAR 0 3
3781: PUSH
3782: LD_VAR 0 2
3786: PPUSH
3787: CALL_OW 279
3791: ST_TO_ADDR
// SetResourceType ( base , 1 , res [ 1 ] + income [ TeamB [ i ] ] ) ;
3792: LD_VAR 0 2
3796: PPUSH
3797: LD_INT 1
3799: PPUSH
3800: LD_VAR 0 3
3804: PUSH
3805: LD_INT 1
3807: ARRAY
3808: PUSH
3809: LD_EXP 12
3813: PUSH
3814: LD_EXP 8
3818: PUSH
3819: LD_VAR 0 1
3823: ARRAY
3824: ARRAY
3825: PLUS
3826: PPUSH
3827: CALL_OW 277
// end ; end ;
3831: GO 3689
3833: POP
3834: POP
// enable ;
3835: ENABLE
// end ;
3836: PPOPN 3
3838: END
// every 0 0$30 do var i , id ;
3839: GO 3841
3841: DISABLE
3842: LD_INT 0
3844: PPUSH
3845: PPUSH
// begin for i = 1 to soldiers [ 1 ] do
3846: LD_ADDR_VAR 0 1
3850: PUSH
3851: DOUBLE
3852: LD_INT 1
3854: DEC
3855: ST_TO_ADDR
3856: LD_EXP 14
3860: PUSH
3861: LD_INT 1
3863: ARRAY
3864: PUSH
3865: FOR_TO
3866: IFFALSE 4014
// begin uc_side = freesides [ 1 ] ;
3868: LD_ADDR_OWVAR 20
3872: PUSH
3873: LD_EXP 4
3877: PUSH
3878: LD_INT 1
3880: ARRAY
3881: ST_TO_ADDR
// uc_nation = mp_sides_nations [ TeamA [ 1 ] ] ;
3882: LD_ADDR_OWVAR 21
3886: PUSH
3887: LD_OWVAR 16
3891: PUSH
3892: LD_EXP 7
3896: PUSH
3897: LD_INT 1
3899: ARRAY
3900: ARRAY
3901: ST_TO_ADDR
// hc_name =  ;
3902: LD_ADDR_OWVAR 26
3906: PUSH
3907: LD_STRING 
3909: ST_TO_ADDR
// hc_skills = [ TASettings [ 1 ] , TASettings [ 1 ] , TASettings [ 1 ] , TASettings [ 1 ] ] ;
3910: LD_ADDR_OWVAR 31
3914: PUSH
3915: LD_EXP 9
3919: PUSH
3920: LD_INT 1
3922: ARRAY
3923: PUSH
3924: LD_EXP 9
3928: PUSH
3929: LD_INT 1
3931: ARRAY
3932: PUSH
3933: LD_EXP 9
3937: PUSH
3938: LD_INT 1
3940: ARRAY
3941: PUSH
3942: LD_EXP 9
3946: PUSH
3947: LD_INT 1
3949: ARRAY
3950: PUSH
3951: EMPTY
3952: LIST
3953: LIST
3954: LIST
3955: LIST
3956: ST_TO_ADDR
// hc_class = TASettings [ 3 ] ;
3957: LD_ADDR_OWVAR 28
3961: PUSH
3962: LD_EXP 9
3966: PUSH
3967: LD_INT 3
3969: ARRAY
3970: ST_TO_ADDR
// hc_sex = rand ( sex_male , sex_female ) ;
3971: LD_ADDR_OWVAR 27
3975: PUSH
3976: LD_INT 1
3978: PPUSH
3979: LD_INT 2
3981: PPUSH
3982: CALL_OW 12
3986: ST_TO_ADDR
// id = createhuman ;
3987: LD_ADDR_VAR 0 2
3991: PUSH
3992: CALL_OW 44
3996: ST_TO_ADDR
// PlaceUnitArea ( id , botspawn , false ) ;
3997: LD_VAR 0 2
4001: PPUSH
4002: LD_INT 7
4004: PPUSH
4005: LD_INT 0
4007: PPUSH
4008: CALL_OW 49
// end ;
4012: GO 3865
4014: POP
4015: POP
// soldiers := Replace ( soldiers , 1 , 0 ) ;
4016: LD_ADDR_EXP 14
4020: PUSH
4021: LD_EXP 14
4025: PPUSH
4026: LD_INT 1
4028: PPUSH
4029: LD_INT 0
4031: PPUSH
4032: CALL_OW 1
4036: ST_TO_ADDR
// for i = 1 to soldiers [ 2 ] do
4037: LD_ADDR_VAR 0 1
4041: PUSH
4042: DOUBLE
4043: LD_INT 1
4045: DEC
4046: ST_TO_ADDR
4047: LD_EXP 14
4051: PUSH
4052: LD_INT 2
4054: ARRAY
4055: PUSH
4056: FOR_TO
4057: IFFALSE 4205
// begin uc_side = freesides [ 2 ] ;
4059: LD_ADDR_OWVAR 20
4063: PUSH
4064: LD_EXP 4
4068: PUSH
4069: LD_INT 2
4071: ARRAY
4072: ST_TO_ADDR
// uc_nation = mp_sides_nations [ TeamB [ 1 ] ] ;
4073: LD_ADDR_OWVAR 21
4077: PUSH
4078: LD_OWVAR 16
4082: PUSH
4083: LD_EXP 8
4087: PUSH
4088: LD_INT 1
4090: ARRAY
4091: ARRAY
4092: ST_TO_ADDR
// hc_name =  ;
4093: LD_ADDR_OWVAR 26
4097: PUSH
4098: LD_STRING 
4100: ST_TO_ADDR
// hc_skills = [ TBSettings [ 1 ] , TBSettings [ 1 ] , TBSettings [ 1 ] , TBSettings [ 1 ] ] ;
4101: LD_ADDR_OWVAR 31
4105: PUSH
4106: LD_EXP 10
4110: PUSH
4111: LD_INT 1
4113: ARRAY
4114: PUSH
4115: LD_EXP 10
4119: PUSH
4120: LD_INT 1
4122: ARRAY
4123: PUSH
4124: LD_EXP 10
4128: PUSH
4129: LD_INT 1
4131: ARRAY
4132: PUSH
4133: LD_EXP 10
4137: PUSH
4138: LD_INT 1
4140: ARRAY
4141: PUSH
4142: EMPTY
4143: LIST
4144: LIST
4145: LIST
4146: LIST
4147: ST_TO_ADDR
// hc_class = TBSettings [ 3 ] ;
4148: LD_ADDR_OWVAR 28
4152: PUSH
4153: LD_EXP 10
4157: PUSH
4158: LD_INT 3
4160: ARRAY
4161: ST_TO_ADDR
// hc_sex = rand ( sex_male , sex_female ) ;
4162: LD_ADDR_OWVAR 27
4166: PUSH
4167: LD_INT 1
4169: PPUSH
4170: LD_INT 2
4172: PPUSH
4173: CALL_OW 12
4177: ST_TO_ADDR
// id = createhuman ;
4178: LD_ADDR_VAR 0 2
4182: PUSH
4183: CALL_OW 44
4187: ST_TO_ADDR
// PlaceUnitArea ( id , topspawn , false ) ;
4188: LD_VAR 0 2
4192: PPUSH
4193: LD_INT 6
4195: PPUSH
4196: LD_INT 0
4198: PPUSH
4199: CALL_OW 49
// end ;
4203: GO 4056
4205: POP
4206: POP
// soldiers := Replace ( soldiers , 2 , 0 ) ;
4207: LD_ADDR_EXP 14
4211: PUSH
4212: LD_EXP 14
4216: PPUSH
4217: LD_INT 2
4219: PPUSH
4220: LD_INT 0
4222: PPUSH
4223: CALL_OW 1
4227: ST_TO_ADDR
// enable ;
4228: ENABLE
// end ;
4229: PPOPN 2
4231: END
// export function ShowTimer ; var AllStrings , ExtraStrings ; begin
4232: LD_INT 0
4234: PPUSH
4235: PPUSH
4236: PPUSH
// if timer <= 0 then
4237: LD_EXP 2
4241: PUSH
4242: LD_INT 0
4244: LESSEQUAL
4245: IFFALSE 4255
// timer = 60 ;
4247: LD_ADDR_EXP 2
4251: PUSH
4252: LD_INT 60
4254: ST_TO_ADDR
// if reltimer <= 0 then
4255: LD_EXP 3
4259: PUSH
4260: LD_INT 0
4262: LESSEQUAL
4263: IFFALSE 4273
// reltimer = 30 ;
4265: LD_ADDR_EXP 3
4269: PUSH
4270: LD_INT 30
4272: ST_TO_ADDR
// reltimer = reltimer - 1 ;
4273: LD_ADDR_EXP 3
4277: PUSH
4278: LD_EXP 3
4282: PUSH
4283: LD_INT 1
4285: MINUS
4286: ST_TO_ADDR
// timer = timer - 1 ;
4287: LD_ADDR_EXP 2
4291: PUSH
4292: LD_EXP 2
4296: PUSH
4297: LD_INT 1
4299: MINUS
4300: ST_TO_ADDR
// AllStrings := [ #timer , tick ] ;
4301: LD_ADDR_VAR 0 2
4305: PUSH
4306: LD_STRING #timer
4308: PUSH
4309: LD_OWVAR 1
4313: PUSH
4314: EMPTY
4315: LIST
4316: LIST
4317: ST_TO_ADDR
// ExtraStrings := [ #income , timer ] ^  ^ [ #yourincome , income [ your_side ] ] ^  ^ [ #release , reltimer ] ;
4318: LD_ADDR_VAR 0 3
4322: PUSH
4323: LD_STRING #income
4325: PUSH
4326: LD_EXP 2
4330: PUSH
4331: EMPTY
4332: LIST
4333: LIST
4334: PUSH
4335: LD_STRING 
4337: ADD
4338: PUSH
4339: LD_STRING #yourincome
4341: PUSH
4342: LD_EXP 12
4346: PUSH
4347: LD_OWVAR 2
4351: ARRAY
4352: PUSH
4353: EMPTY
4354: LIST
4355: LIST
4356: ADD
4357: PUSH
4358: LD_STRING 
4360: ADD
4361: PUSH
4362: LD_STRING #release
4364: PUSH
4365: LD_EXP 3
4369: PUSH
4370: EMPTY
4371: LIST
4372: LIST
4373: ADD
4374: ST_TO_ADDR
// if ( ExtraStrings ) then
4375: LD_VAR 0 3
4379: IFFALSE 4401
// AllStrings := AllStrings ^  ^ ExtraStrings ;
4381: LD_ADDR_VAR 0 2
4385: PUSH
4386: LD_VAR 0 2
4390: PUSH
4391: LD_STRING 
4393: ADD
4394: PUSH
4395: LD_VAR 0 3
4399: ADD
4400: ST_TO_ADDR
// Display_Strings := AllStrings ;
4401: LD_ADDR_OWVAR 47
4405: PUSH
4406: LD_VAR 0 2
4410: ST_TO_ADDR
// end ;
4411: LD_VAR 0 1
4415: RET
// every 0 0$1 do
4416: GO 4418
4418: DISABLE
// begin ShowTimer ;
4419: CALL 4232 0 0
// enable ;
4423: ENABLE
// end ;
4424: END
// every 0 0$01 do var p1 , a1 , p2 , a2 , i ;
4425: GO 4427
4427: DISABLE
4428: LD_INT 0
4430: PPUSH
4431: PPUSH
4432: PPUSH
4433: PPUSH
4434: PPUSH
// begin repeat wait ( 0 0$01 ) ;
4435: LD_INT 35
4437: PPUSH
4438: CALL_OW 67
// if TeamA = 3 then
4442: LD_EXP 7
4446: PUSH
4447: LD_INT 3
4449: EQUAL
4450: IFFALSE 4521
// p1 = FilterAllUnits ( [ f_or , [ f_side , TeamA [ 1 ] ] , [ f_side , TeamA [ 2 ] ] , [ f_side , TeamA [ 3 ] ] ] ) else
4452: LD_ADDR_VAR 0 1
4456: PUSH
4457: LD_INT 2
4459: PUSH
4460: LD_INT 22
4462: PUSH
4463: LD_EXP 7
4467: PUSH
4468: LD_INT 1
4470: ARRAY
4471: PUSH
4472: EMPTY
4473: LIST
4474: LIST
4475: PUSH
4476: LD_INT 22
4478: PUSH
4479: LD_EXP 7
4483: PUSH
4484: LD_INT 2
4486: ARRAY
4487: PUSH
4488: EMPTY
4489: LIST
4490: LIST
4491: PUSH
4492: LD_INT 22
4494: PUSH
4495: LD_EXP 7
4499: PUSH
4500: LD_INT 3
4502: ARRAY
4503: PUSH
4504: EMPTY
4505: LIST
4506: LIST
4507: PUSH
4508: EMPTY
4509: LIST
4510: LIST
4511: LIST
4512: LIST
4513: PPUSH
4514: CALL_OW 69
4518: ST_TO_ADDR
4519: GO 4609
// if TeamA = 2 then
4521: LD_EXP 7
4525: PUSH
4526: LD_INT 2
4528: EQUAL
4529: IFFALSE 4583
// p1 = FilterAllUnits ( [ f_or , [ f_side , TeamA [ 1 ] ] , [ f_side , TeamA [ 2 ] ] ] ) else
4531: LD_ADDR_VAR 0 1
4535: PUSH
4536: LD_INT 2
4538: PUSH
4539: LD_INT 22
4541: PUSH
4542: LD_EXP 7
4546: PUSH
4547: LD_INT 1
4549: ARRAY
4550: PUSH
4551: EMPTY
4552: LIST
4553: LIST
4554: PUSH
4555: LD_INT 22
4557: PUSH
4558: LD_EXP 7
4562: PUSH
4563: LD_INT 2
4565: ARRAY
4566: PUSH
4567: EMPTY
4568: LIST
4569: LIST
4570: PUSH
4571: EMPTY
4572: LIST
4573: LIST
4574: LIST
4575: PPUSH
4576: CALL_OW 69
4580: ST_TO_ADDR
4581: GO 4609
// p1 = FilterAllUnits ( [ f_side , TeamA [ 1 ] ] ) ;
4583: LD_ADDR_VAR 0 1
4587: PUSH
4588: LD_INT 22
4590: PUSH
4591: LD_EXP 7
4595: PUSH
4596: LD_INT 1
4598: ARRAY
4599: PUSH
4600: EMPTY
4601: LIST
4602: LIST
4603: PPUSH
4604: CALL_OW 69
4608: ST_TO_ADDR
// a1 = FilterAllUnits ( [ f_side , freesides [ 2 ] ] ) ;
4609: LD_ADDR_VAR 0 2
4613: PUSH
4614: LD_INT 22
4616: PUSH
4617: LD_EXP 4
4621: PUSH
4622: LD_INT 2
4624: ARRAY
4625: PUSH
4626: EMPTY
4627: LIST
4628: LIST
4629: PPUSH
4630: CALL_OW 69
4634: ST_TO_ADDR
// if TeamB = 3 then
4635: LD_EXP 8
4639: PUSH
4640: LD_INT 3
4642: EQUAL
4643: IFFALSE 4714
// p2 = FilterAllUnits ( [ f_or , [ f_side , TeamB [ 1 ] ] , [ f_side , TeamB [ 2 ] ] , [ f_side , TeamB [ 3 ] ] ] ) else
4645: LD_ADDR_VAR 0 3
4649: PUSH
4650: LD_INT 2
4652: PUSH
4653: LD_INT 22
4655: PUSH
4656: LD_EXP 8
4660: PUSH
4661: LD_INT 1
4663: ARRAY
4664: PUSH
4665: EMPTY
4666: LIST
4667: LIST
4668: PUSH
4669: LD_INT 22
4671: PUSH
4672: LD_EXP 8
4676: PUSH
4677: LD_INT 2
4679: ARRAY
4680: PUSH
4681: EMPTY
4682: LIST
4683: LIST
4684: PUSH
4685: LD_INT 22
4687: PUSH
4688: LD_EXP 8
4692: PUSH
4693: LD_INT 3
4695: ARRAY
4696: PUSH
4697: EMPTY
4698: LIST
4699: LIST
4700: PUSH
4701: EMPTY
4702: LIST
4703: LIST
4704: LIST
4705: LIST
4706: PPUSH
4707: CALL_OW 69
4711: ST_TO_ADDR
4712: GO 4802
// if TeamB = 2 then
4714: LD_EXP 8
4718: PUSH
4719: LD_INT 2
4721: EQUAL
4722: IFFALSE 4776
// p2 = FilterAllUnits ( [ f_or , [ f_side , TeamB [ 1 ] ] , [ f_side , TeamB [ 2 ] ] ] ) else
4724: LD_ADDR_VAR 0 3
4728: PUSH
4729: LD_INT 2
4731: PUSH
4732: LD_INT 22
4734: PUSH
4735: LD_EXP 8
4739: PUSH
4740: LD_INT 1
4742: ARRAY
4743: PUSH
4744: EMPTY
4745: LIST
4746: LIST
4747: PUSH
4748: LD_INT 22
4750: PUSH
4751: LD_EXP 8
4755: PUSH
4756: LD_INT 2
4758: ARRAY
4759: PUSH
4760: EMPTY
4761: LIST
4762: LIST
4763: PUSH
4764: EMPTY
4765: LIST
4766: LIST
4767: LIST
4768: PPUSH
4769: CALL_OW 69
4773: ST_TO_ADDR
4774: GO 4802
// p2 = FilterAllUnits ( [ f_side , TeamB [ 1 ] ] ) ;
4776: LD_ADDR_VAR 0 3
4780: PUSH
4781: LD_INT 22
4783: PUSH
4784: LD_EXP 8
4788: PUSH
4789: LD_INT 1
4791: ARRAY
4792: PUSH
4793: EMPTY
4794: LIST
4795: LIST
4796: PPUSH
4797: CALL_OW 69
4801: ST_TO_ADDR
// a2 = FilterAllUnits ( [ f_side , freesides [ 1 ] ] ) ;
4802: LD_ADDR_VAR 0 4
4806: PUSH
4807: LD_INT 22
4809: PUSH
4810: LD_EXP 4
4814: PUSH
4815: LD_INT 1
4817: ARRAY
4818: PUSH
4819: EMPTY
4820: LIST
4821: LIST
4822: PPUSH
4823: CALL_OW 69
4827: ST_TO_ADDR
// for i in a1 do
4828: LD_ADDR_VAR 0 5
4832: PUSH
4833: LD_VAR 0 2
4837: PUSH
4838: FOR_IN
4839: IFFALSE 4867
// ComAttackUnit ( i , NearestUnitToUnit ( p1 , i ) ) ;
4841: LD_VAR 0 5
4845: PPUSH
4846: LD_VAR 0 1
4850: PPUSH
4851: LD_VAR 0 5
4855: PPUSH
4856: CALL_OW 74
4860: PPUSH
4861: CALL_OW 115
4865: GO 4838
4867: POP
4868: POP
// for i in a2 do
4869: LD_ADDR_VAR 0 5
4873: PUSH
4874: LD_VAR 0 4
4878: PUSH
4879: FOR_IN
4880: IFFALSE 4908
// ComAttackUnit ( i , NearestUnitToUnit ( p2 , i ) ) ;
4882: LD_VAR 0 5
4886: PPUSH
4887: LD_VAR 0 3
4891: PPUSH
4892: LD_VAR 0 5
4896: PPUSH
4897: CALL_OW 74
4901: PPUSH
4902: CALL_OW 115
4906: GO 4879
4908: POP
4909: POP
// until a2 = 100000 end ;
4910: LD_VAR 0 4
4914: PUSH
4915: LD_INT 100000
4917: EQUAL
4918: IFFALSE 4435
4920: PPOPN 5
4922: END
// export click ; every 0 0$0.1 do
4923: GO 4925
4925: DISABLE
// begin click = 1 ;
4926: LD_ADDR_EXP 15
4930: PUSH
4931: LD_INT 1
4933: ST_TO_ADDR
// wait ( GetMultiplayerSetting ( 2 ) * 10 10$00 ) ;
4934: LD_INT 2
4936: PPUSH
4937: CALL_OW 426
4941: PUSH
4942: LD_INT 21000
4944: MUL
4945: PPUSH
4946: CALL_OW 67
// if GetMultiplayerSetting ( 2 ) = 5 then
4950: LD_INT 2
4952: PPUSH
4953: CALL_OW 426
4957: PUSH
4958: LD_INT 5
4960: EQUAL
4961: IFFALSE 4973
// click = 1 else
4963: LD_ADDR_EXP 15
4967: PUSH
4968: LD_INT 1
4970: ST_TO_ADDR
4971: GO 4981
// click = 0 ;
4973: LD_ADDR_EXP 15
4977: PUSH
4978: LD_INT 0
4980: ST_TO_ADDR
// end ;
4981: END
// every 0 0$0.1 trigger isSelected ( FilterAllUnits ( [ f_placed ] ) ) do var i , u , Filter , l , res , base , id , z , re ;
4982: LD_INT 52
4984: PUSH
4985: EMPTY
4986: LIST
4987: PPUSH
4988: CALL_OW 69
4992: PPUSH
4993: CALL_OW 306
4997: IFFALSE 5230
4999: GO 5001
5001: DISABLE
5002: LD_INT 0
5004: PPUSH
5005: PPUSH
5006: PPUSH
5007: PPUSH
5008: PPUSH
5009: PPUSH
5010: PPUSH
5011: PPUSH
5012: PPUSH
// begin Filter = FilterAllUnits ( [ f_placed ] ) ;
5013: LD_ADDR_VAR 0 3
5017: PUSH
5018: LD_INT 52
5020: PUSH
5021: EMPTY
5022: LIST
5023: PPUSH
5024: CALL_OW 69
5028: ST_TO_ADDR
// for i = 1 to Filter do
5029: LD_ADDR_VAR 0 1
5033: PUSH
5034: DOUBLE
5035: LD_INT 1
5037: DEC
5038: ST_TO_ADDR
5039: LD_VAR 0 3
5043: PUSH
5044: FOR_TO
5045: IFFALSE 5082
// if isSelected ( Filter [ i ] ) then
5047: LD_VAR 0 3
5051: PUSH
5052: LD_VAR 0 1
5056: ARRAY
5057: PPUSH
5058: CALL_OW 306
5062: IFFALSE 5080
// u = Filter [ i ] ;
5064: LD_ADDR_VAR 0 2
5068: PUSH
5069: LD_VAR 0 3
5073: PUSH
5074: LD_VAR 0 1
5078: ARRAY
5079: ST_TO_ADDR
5080: GO 5044
5082: POP
5083: POP
// if GetSide ( u ) = freesides [ 1 ] or GetSide ( u ) = freesides [ 2 ] then
5084: LD_VAR 0 2
5088: PPUSH
5089: CALL_OW 255
5093: PUSH
5094: LD_EXP 4
5098: PUSH
5099: LD_INT 1
5101: ARRAY
5102: EQUAL
5103: PUSH
5104: LD_VAR 0 2
5108: PPUSH
5109: CALL_OW 255
5113: PUSH
5114: LD_EXP 4
5118: PUSH
5119: LD_INT 2
5121: ARRAY
5122: EQUAL
5123: OR
5124: IFFALSE 5229
// for i = 1 to bs do
5126: LD_ADDR_VAR 0 1
5130: PUSH
5131: DOUBLE
5132: LD_INT 1
5134: DEC
5135: ST_TO_ADDR
5136: LD_EXP 11
5140: PUSH
5141: FOR_TO
5142: IFFALSE 5227
// if GetBType ( u ) = bs [ i ] then
5144: LD_VAR 0 2
5148: PPUSH
5149: CALL_OW 266
5153: PUSH
5154: LD_EXP 11
5158: PUSH
5159: LD_VAR 0 1
5163: ARRAY
5164: EQUAL
5165: IFFALSE 5225
// begin ToLua ( OW_CUSTOM_COMMAND( & u & , & i & , & your_side & ); ) ;
5167: LD_STRING OW_CUSTOM_COMMAND(
5169: PUSH
5170: LD_VAR 0 2
5174: STR
5175: PUSH
5176: LD_STRING ,
5178: STR
5179: PUSH
5180: LD_VAR 0 1
5184: STR
5185: PUSH
5186: LD_STRING ,
5188: STR
5189: PUSH
5190: LD_OWVAR 2
5194: STR
5195: PUSH
5196: LD_STRING );
5198: STR
5199: PPUSH
5200: CALL_OW 559
// if click = 1 then
5204: LD_EXP 15
5208: PUSH
5209: LD_INT 1
5211: EQUAL
5212: IFFALSE 5223
// DeselectUnits ( u ) ;
5214: LD_VAR 0 2
5218: PPUSH
5219: CALL_OW 491
// break ;
5223: GO 5227
// end ;
5225: GO 5141
5227: POP
5228: POP
// enable ;
5229: ENABLE
// end ;
5230: PPOPN 9
5232: END
// on CustomCommand ( side , u , i , s , arg4 , arg5 ) do var res , z , id , o , p , base , w , k ;
5233: LD_INT 0
5235: PPUSH
5236: PPUSH
5237: PPUSH
5238: PPUSH
5239: PPUSH
5240: PPUSH
5241: PPUSH
5242: PPUSH
// begin o = [ 42 , 42 , 42 , 42 , 43 , 44 , 45 , 46 , 48 ] ;
5243: LD_ADDR_VAR 0 10
5247: PUSH
5248: LD_INT 42
5250: PUSH
5251: LD_INT 42
5253: PUSH
5254: LD_INT 42
5256: PUSH
5257: LD_INT 42
5259: PUSH
5260: LD_INT 43
5262: PUSH
5263: LD_INT 44
5265: PUSH
5266: LD_INT 45
5268: PUSH
5269: LD_INT 46
5271: PUSH
5272: LD_INT 48
5274: PUSH
5275: EMPTY
5276: LIST
5277: LIST
5278: LIST
5279: LIST
5280: LIST
5281: LIST
5282: LIST
5283: LIST
5284: LIST
5285: ST_TO_ADDR
// p = [ 21 , 22 , 23 , 24 , 24 , 24 , 24 , 24 , 24 ] ;
5286: LD_ADDR_VAR 0 11
5290: PUSH
5291: LD_INT 21
5293: PUSH
5294: LD_INT 22
5296: PUSH
5297: LD_INT 23
5299: PUSH
5300: LD_INT 24
5302: PUSH
5303: LD_INT 24
5305: PUSH
5306: LD_INT 24
5308: PUSH
5309: LD_INT 24
5311: PUSH
5312: LD_INT 24
5314: PUSH
5315: LD_INT 24
5317: PUSH
5318: EMPTY
5319: LIST
5320: LIST
5321: LIST
5322: LIST
5323: LIST
5324: LIST
5325: LIST
5326: LIST
5327: LIST
5328: ST_TO_ADDR
// base = FilterAllUnits ( [ [ f_side , s ] , [ f_or , [ f_btype , b_depot ] , [ f_btype , b_warehouse ] ] ] ) ;
5329: LD_ADDR_VAR 0 12
5333: PUSH
5334: LD_INT 22
5336: PUSH
5337: LD_VAR 0 4
5341: PUSH
5342: EMPTY
5343: LIST
5344: LIST
5345: PUSH
5346: LD_INT 2
5348: PUSH
5349: LD_INT 30
5351: PUSH
5352: LD_INT 0
5354: PUSH
5355: EMPTY
5356: LIST
5357: LIST
5358: PUSH
5359: LD_INT 30
5361: PUSH
5362: LD_INT 1
5364: PUSH
5365: EMPTY
5366: LIST
5367: LIST
5368: PUSH
5369: EMPTY
5370: LIST
5371: LIST
5372: LIST
5373: PUSH
5374: EMPTY
5375: LIST
5376: LIST
5377: PPUSH
5378: CALL_OW 69
5382: ST_TO_ADDR
// if base then
5383: LD_VAR 0 12
5387: IFFALSE 9162
// begin base = GetBase ( base [ 1 ] ) ;
5389: LD_ADDR_VAR 0 12
5393: PUSH
5394: LD_VAR 0 12
5398: PUSH
5399: LD_INT 1
5401: ARRAY
5402: PPUSH
5403: CALL_OW 274
5407: ST_TO_ADDR
// res = GetResources ( base ) ;
5408: LD_ADDR_VAR 0 7
5412: PUSH
5413: LD_VAR 0 12
5417: PPUSH
5418: CALL_OW 279
5422: ST_TO_ADDR
// if not res then
5423: LD_VAR 0 7
5427: NOT
5428: IFFALSE 5464
// for z = 1 to 3 do
5430: LD_ADDR_VAR 0 8
5434: PUSH
5435: DOUBLE
5436: LD_INT 1
5438: DEC
5439: ST_TO_ADDR
5440: LD_INT 3
5442: PUSH
5443: FOR_TO
5444: IFFALSE 5462
// res = res ^ 0 ;
5446: LD_ADDR_VAR 0 7
5450: PUSH
5451: LD_VAR 0 7
5455: PUSH
5456: LD_INT 0
5458: ADD
5459: ST_TO_ADDR
5460: GO 5443
5462: POP
5463: POP
// if res = 1 then
5464: LD_VAR 0 7
5468: PUSH
5469: LD_INT 1
5471: EQUAL
5472: IFFALSE 5508
// for z = 1 to 2 do
5474: LD_ADDR_VAR 0 8
5478: PUSH
5479: DOUBLE
5480: LD_INT 1
5482: DEC
5483: ST_TO_ADDR
5484: LD_INT 2
5486: PUSH
5487: FOR_TO
5488: IFFALSE 5506
// res = res ^ 0 ;
5490: LD_ADDR_VAR 0 7
5494: PUSH
5495: LD_VAR 0 7
5499: PUSH
5500: LD_INT 0
5502: ADD
5503: ST_TO_ADDR
5504: GO 5487
5506: POP
5507: POP
// if res = 2 then
5508: LD_VAR 0 7
5512: PUSH
5513: LD_INT 2
5515: EQUAL
5516: IFFALSE 5532
// res = res ^ 0 ;
5518: LD_ADDR_VAR 0 7
5522: PUSH
5523: LD_VAR 0 7
5527: PUSH
5528: LD_INT 0
5530: ADD
5531: ST_TO_ADDR
// if req [ i ] [ 3 ] <> 0 then
5532: LD_EXP 13
5536: PUSH
5537: LD_VAR 0 3
5541: ARRAY
5542: PUSH
5543: LD_INT 3
5545: ARRAY
5546: PUSH
5547: LD_INT 0
5549: NONEQUAL
5550: IFFALSE 5704
// begin if res [ req [ i ] [ 2 ] ] >= req [ i ] [ 1 ] then
5552: LD_VAR 0 7
5556: PUSH
5557: LD_EXP 13
5561: PUSH
5562: LD_VAR 0 3
5566: ARRAY
5567: PUSH
5568: LD_INT 2
5570: ARRAY
5571: ARRAY
5572: PUSH
5573: LD_EXP 13
5577: PUSH
5578: LD_VAR 0 3
5582: ARRAY
5583: PUSH
5584: LD_INT 1
5586: ARRAY
5587: GREATEREQUAL
5588: IFFALSE 5702
// begin SetResourceType ( base , req [ i ] [ 3 ] , res [ req [ i ] [ 3 ] ] + 1 ) ;
5590: LD_VAR 0 12
5594: PPUSH
5595: LD_EXP 13
5599: PUSH
5600: LD_VAR 0 3
5604: ARRAY
5605: PUSH
5606: LD_INT 3
5608: ARRAY
5609: PPUSH
5610: LD_VAR 0 7
5614: PUSH
5615: LD_EXP 13
5619: PUSH
5620: LD_VAR 0 3
5624: ARRAY
5625: PUSH
5626: LD_INT 3
5628: ARRAY
5629: ARRAY
5630: PUSH
5631: LD_INT 1
5633: PLUS
5634: PPUSH
5635: CALL_OW 277
// SetResourceType ( base , req [ i ] [ 2 ] , res [ req [ i ] [ 2 ] ] - req [ i ] [ 1 ] ) ;
5639: LD_VAR 0 12
5643: PPUSH
5644: LD_EXP 13
5648: PUSH
5649: LD_VAR 0 3
5653: ARRAY
5654: PUSH
5655: LD_INT 2
5657: ARRAY
5658: PPUSH
5659: LD_VAR 0 7
5663: PUSH
5664: LD_EXP 13
5668: PUSH
5669: LD_VAR 0 3
5673: ARRAY
5674: PUSH
5675: LD_INT 2
5677: ARRAY
5678: ARRAY
5679: PUSH
5680: LD_EXP 13
5684: PUSH
5685: LD_VAR 0 3
5689: ARRAY
5690: PUSH
5691: LD_INT 1
5693: ARRAY
5694: MINUS
5695: PPUSH
5696: CALL_OW 277
// exit ;
5700: GO 9162
// end ; end else
5702: GO 9162
// begin if res [ req [ i ] [ 2 ] ] >= req [ i ] [ 1 ] then
5704: LD_VAR 0 7
5708: PUSH
5709: LD_EXP 13
5713: PUSH
5714: LD_VAR 0 3
5718: ARRAY
5719: PUSH
5720: LD_INT 2
5722: ARRAY
5723: ARRAY
5724: PUSH
5725: LD_EXP 13
5729: PUSH
5730: LD_VAR 0 3
5734: ARRAY
5735: PUSH
5736: LD_INT 1
5738: ARRAY
5739: GREATEREQUAL
5740: IFFALSE 9162
// begin SetResourceType ( base , req [ i ] [ 2 ] , res [ req [ i ] [ 2 ] ] - req [ i ] [ 1 ] ) ;
5742: LD_VAR 0 12
5746: PPUSH
5747: LD_EXP 13
5751: PUSH
5752: LD_VAR 0 3
5756: ARRAY
5757: PUSH
5758: LD_INT 2
5760: ARRAY
5761: PPUSH
5762: LD_VAR 0 7
5766: PUSH
5767: LD_EXP 13
5771: PUSH
5772: LD_VAR 0 3
5776: ARRAY
5777: PUSH
5778: LD_INT 2
5780: ARRAY
5781: ARRAY
5782: PUSH
5783: LD_EXP 13
5787: PUSH
5788: LD_VAR 0 3
5792: ARRAY
5793: PUSH
5794: LD_INT 1
5796: ARRAY
5797: MINUS
5798: PPUSH
5799: CALL_OW 277
// if i = 3 then
5803: LD_VAR 0 3
5807: PUSH
5808: LD_INT 3
5810: EQUAL
5811: IFFALSE 6027
// begin for z = 1 to TeamA do
5813: LD_ADDR_VAR 0 8
5817: PUSH
5818: DOUBLE
5819: LD_INT 1
5821: DEC
5822: ST_TO_ADDR
5823: LD_EXP 7
5827: PUSH
5828: FOR_TO
5829: IFFALSE 5917
// if TeamA [ z ] = s then
5831: LD_EXP 7
5835: PUSH
5836: LD_VAR 0 8
5840: ARRAY
5841: PUSH
5842: LD_VAR 0 4
5846: EQUAL
5847: IFFALSE 5915
// begin soldiers = Replace ( soldiers , 1 , soldiers [ 1 ] + 1 ) ;
5849: LD_ADDR_EXP 14
5853: PUSH
5854: LD_EXP 14
5858: PPUSH
5859: LD_INT 1
5861: PPUSH
5862: LD_EXP 14
5866: PUSH
5867: LD_INT 1
5869: ARRAY
5870: PUSH
5871: LD_INT 1
5873: PLUS
5874: PPUSH
5875: CALL_OW 1
5879: ST_TO_ADDR
// income := Replace ( income , s , income [ s ] + 5 ) ;
5880: LD_ADDR_EXP 12
5884: PUSH
5885: LD_EXP 12
5889: PPUSH
5890: LD_VAR 0 4
5894: PPUSH
5895: LD_EXP 12
5899: PUSH
5900: LD_VAR 0 4
5904: ARRAY
5905: PUSH
5906: LD_INT 5
5908: PLUS
5909: PPUSH
5910: CALL_OW 1
5914: ST_TO_ADDR
// end ;
5915: GO 5828
5917: POP
5918: POP
// for z = 1 to TeamB do
5919: LD_ADDR_VAR 0 8
5923: PUSH
5924: DOUBLE
5925: LD_INT 1
5927: DEC
5928: ST_TO_ADDR
5929: LD_EXP 8
5933: PUSH
5934: FOR_TO
5935: IFFALSE 6023
// if TeamB [ z ] = s then
5937: LD_EXP 8
5941: PUSH
5942: LD_VAR 0 8
5946: ARRAY
5947: PUSH
5948: LD_VAR 0 4
5952: EQUAL
5953: IFFALSE 6021
// begin soldiers = Replace ( soldiers , 2 , soldiers [ 2 ] + 1 ) ;
5955: LD_ADDR_EXP 14
5959: PUSH
5960: LD_EXP 14
5964: PPUSH
5965: LD_INT 2
5967: PPUSH
5968: LD_EXP 14
5972: PUSH
5973: LD_INT 2
5975: ARRAY
5976: PUSH
5977: LD_INT 1
5979: PLUS
5980: PPUSH
5981: CALL_OW 1
5985: ST_TO_ADDR
// income := Replace ( income , s , income [ s ] + 5 ) ;
5986: LD_ADDR_EXP 12
5990: PUSH
5991: LD_EXP 12
5995: PPUSH
5996: LD_VAR 0 4
6000: PPUSH
6001: LD_EXP 12
6005: PUSH
6006: LD_VAR 0 4
6010: ARRAY
6011: PUSH
6012: LD_INT 5
6014: PLUS
6015: PPUSH
6016: CALL_OW 1
6020: ST_TO_ADDR
// end ;
6021: GO 5934
6023: POP
6024: POP
// exit ;
6025: GO 9162
// end ; if i = 4 then
6027: LD_VAR 0 3
6031: PUSH
6032: LD_INT 4
6034: EQUAL
6035: IFFALSE 6395
// begin for z = 1 to TeamA do
6037: LD_ADDR_VAR 0 8
6041: PUSH
6042: DOUBLE
6043: LD_INT 1
6045: DEC
6046: ST_TO_ADDR
6047: LD_EXP 7
6051: PUSH
6052: FOR_TO
6053: IFFALSE 6213
// if TeamA [ z ] = s then
6055: LD_EXP 7
6059: PUSH
6060: LD_VAR 0 8
6064: ARRAY
6065: PUSH
6066: LD_VAR 0 4
6070: EQUAL
6071: IFFALSE 6211
// begin uc_side = freesides [ 1 ] ;
6073: LD_ADDR_OWVAR 20
6077: PUSH
6078: LD_EXP 4
6082: PUSH
6083: LD_INT 1
6085: ARRAY
6086: ST_TO_ADDR
// uc_nation = 3 ;
6087: LD_ADDR_OWVAR 21
6091: PUSH
6092: LD_INT 3
6094: ST_TO_ADDR
// vc_chassis = p [ TASettings [ 2 ] ] ;
6095: LD_ADDR_OWVAR 37
6099: PUSH
6100: LD_VAR 0 11
6104: PUSH
6105: LD_EXP 9
6109: PUSH
6110: LD_INT 2
6112: ARRAY
6113: ARRAY
6114: ST_TO_ADDR
// vc_weapon = o [ TASettings [ 2 ] ] ;
6115: LD_ADDR_OWVAR 40
6119: PUSH
6120: LD_VAR 0 10
6124: PUSH
6125: LD_EXP 9
6129: PUSH
6130: LD_INT 2
6132: ARRAY
6133: ARRAY
6134: ST_TO_ADDR
// vc_engine = 1 ;
6135: LD_ADDR_OWVAR 39
6139: PUSH
6140: LD_INT 1
6142: ST_TO_ADDR
// vc_control = 3 ;
6143: LD_ADDR_OWVAR 38
6147: PUSH
6148: LD_INT 3
6150: ST_TO_ADDR
// id = createvehicle ;
6151: LD_ADDR_VAR 0 9
6155: PUSH
6156: CALL_OW 45
6160: ST_TO_ADDR
// PlaceUnitArea ( id , botspawn , false ) ;
6161: LD_VAR 0 9
6165: PPUSH
6166: LD_INT 7
6168: PPUSH
6169: LD_INT 0
6171: PPUSH
6172: CALL_OW 49
// income := Replace ( income , s , income [ s ] + 40 ) ;
6176: LD_ADDR_EXP 12
6180: PUSH
6181: LD_EXP 12
6185: PPUSH
6186: LD_VAR 0 4
6190: PPUSH
6191: LD_EXP 12
6195: PUSH
6196: LD_VAR 0 4
6200: ARRAY
6201: PUSH
6202: LD_INT 40
6204: PLUS
6205: PPUSH
6206: CALL_OW 1
6210: ST_TO_ADDR
// end ;
6211: GO 6052
6213: POP
6214: POP
// for z = 1 to TeamB do
6215: LD_ADDR_VAR 0 8
6219: PUSH
6220: DOUBLE
6221: LD_INT 1
6223: DEC
6224: ST_TO_ADDR
6225: LD_EXP 8
6229: PUSH
6230: FOR_TO
6231: IFFALSE 6391
// if TeamB [ z ] = s then
6233: LD_EXP 8
6237: PUSH
6238: LD_VAR 0 8
6242: ARRAY
6243: PUSH
6244: LD_VAR 0 4
6248: EQUAL
6249: IFFALSE 6389
// begin uc_side = freesides [ 2 ] ;
6251: LD_ADDR_OWVAR 20
6255: PUSH
6256: LD_EXP 4
6260: PUSH
6261: LD_INT 2
6263: ARRAY
6264: ST_TO_ADDR
// uc_nation = 3 ;
6265: LD_ADDR_OWVAR 21
6269: PUSH
6270: LD_INT 3
6272: ST_TO_ADDR
// vc_chassis = p [ TBSettings [ 2 ] ] ;
6273: LD_ADDR_OWVAR 37
6277: PUSH
6278: LD_VAR 0 11
6282: PUSH
6283: LD_EXP 10
6287: PUSH
6288: LD_INT 2
6290: ARRAY
6291: ARRAY
6292: ST_TO_ADDR
// vc_weapon = o [ TBSettings [ 2 ] ] ;
6293: LD_ADDR_OWVAR 40
6297: PUSH
6298: LD_VAR 0 10
6302: PUSH
6303: LD_EXP 10
6307: PUSH
6308: LD_INT 2
6310: ARRAY
6311: ARRAY
6312: ST_TO_ADDR
// vc_engine = 1 ;
6313: LD_ADDR_OWVAR 39
6317: PUSH
6318: LD_INT 1
6320: ST_TO_ADDR
// vc_control = 3 ;
6321: LD_ADDR_OWVAR 38
6325: PUSH
6326: LD_INT 3
6328: ST_TO_ADDR
// id = createvehicle ;
6329: LD_ADDR_VAR 0 9
6333: PUSH
6334: CALL_OW 45
6338: ST_TO_ADDR
// PlaceUnitArea ( id , topspawn , false ) ;
6339: LD_VAR 0 9
6343: PPUSH
6344: LD_INT 6
6346: PPUSH
6347: LD_INT 0
6349: PPUSH
6350: CALL_OW 49
// income := Replace ( income , s , income [ s ] + 40 ) ;
6354: LD_ADDR_EXP 12
6358: PUSH
6359: LD_EXP 12
6363: PPUSH
6364: LD_VAR 0 4
6368: PPUSH
6369: LD_EXP 12
6373: PUSH
6374: LD_VAR 0 4
6378: ARRAY
6379: PUSH
6380: LD_INT 40
6382: PLUS
6383: PPUSH
6384: CALL_OW 1
6388: ST_TO_ADDR
// end ;
6389: GO 6230
6391: POP
6392: POP
// exit ;
6393: GO 9162
// end ; if i = 5 then
6395: LD_VAR 0 3
6399: PUSH
6400: LD_INT 5
6402: EQUAL
6403: IFFALSE 6595
// begin for z = 1 to TeamA do
6405: LD_ADDR_VAR 0 8
6409: PUSH
6410: DOUBLE
6411: LD_INT 1
6413: DEC
6414: ST_TO_ADDR
6415: LD_EXP 7
6419: PUSH
6420: FOR_TO
6421: IFFALSE 6497
// if TeamA [ z ] = s then
6423: LD_EXP 7
6427: PUSH
6428: LD_VAR 0 8
6432: ARRAY
6433: PUSH
6434: LD_VAR 0 4
6438: EQUAL
6439: IFFALSE 6495
// begin TASettings := Replace ( TASettings , 1 , TASettings [ 1 ] + 1 ) ;
6441: LD_ADDR_EXP 9
6445: PUSH
6446: LD_EXP 9
6450: PPUSH
6451: LD_INT 1
6453: PPUSH
6454: LD_EXP 9
6458: PUSH
6459: LD_INT 1
6461: ARRAY
6462: PUSH
6463: LD_INT 1
6465: PLUS
6466: PPUSH
6467: CALL_OW 1
6471: ST_TO_ADDR
// if TASettings [ 1 ] = 5 then
6472: LD_EXP 9
6476: PUSH
6477: LD_INT 1
6479: ARRAY
6480: PUSH
6481: LD_INT 5
6483: EQUAL
6484: IFFALSE 6495
// DestroyUnit ( u ) ;
6486: LD_VAR 0 2
6490: PPUSH
6491: CALL_OW 65
// end ;
6495: GO 6420
6497: POP
6498: POP
// for z = 1 to TeamB do
6499: LD_ADDR_VAR 0 8
6503: PUSH
6504: DOUBLE
6505: LD_INT 1
6507: DEC
6508: ST_TO_ADDR
6509: LD_EXP 8
6513: PUSH
6514: FOR_TO
6515: IFFALSE 6591
// if TeamB [ z ] = s then
6517: LD_EXP 8
6521: PUSH
6522: LD_VAR 0 8
6526: ARRAY
6527: PUSH
6528: LD_VAR 0 4
6532: EQUAL
6533: IFFALSE 6589
// begin TBSettings := Replace ( TBSettings , 1 , TBSettings [ 1 ] + 1 ) ;
6535: LD_ADDR_EXP 10
6539: PUSH
6540: LD_EXP 10
6544: PPUSH
6545: LD_INT 1
6547: PPUSH
6548: LD_EXP 10
6552: PUSH
6553: LD_INT 1
6555: ARRAY
6556: PUSH
6557: LD_INT 1
6559: PLUS
6560: PPUSH
6561: CALL_OW 1
6565: ST_TO_ADDR
// if TBSettings [ 1 ] = 5 then
6566: LD_EXP 10
6570: PUSH
6571: LD_INT 1
6573: ARRAY
6574: PUSH
6575: LD_INT 5
6577: EQUAL
6578: IFFALSE 6589
// DestroyUnit ( u ) ;
6580: LD_VAR 0 2
6584: PPUSH
6585: CALL_OW 65
// end ;
6589: GO 6514
6591: POP
6592: POP
// exit ;
6593: GO 9162
// end ; if i = 6 then
6595: LD_VAR 0 3
6599: PUSH
6600: LD_INT 6
6602: EQUAL
6603: IFFALSE 6795
// begin for z = 1 to TeamA do
6605: LD_ADDR_VAR 0 8
6609: PUSH
6610: DOUBLE
6611: LD_INT 1
6613: DEC
6614: ST_TO_ADDR
6615: LD_EXP 7
6619: PUSH
6620: FOR_TO
6621: IFFALSE 6697
// if TeamA [ z ] = s then
6623: LD_EXP 7
6627: PUSH
6628: LD_VAR 0 8
6632: ARRAY
6633: PUSH
6634: LD_VAR 0 4
6638: EQUAL
6639: IFFALSE 6695
// begin TASettings := Replace ( TASettings , 2 , TASettings [ 2 ] + 1 ) ;
6641: LD_ADDR_EXP 9
6645: PUSH
6646: LD_EXP 9
6650: PPUSH
6651: LD_INT 2
6653: PPUSH
6654: LD_EXP 9
6658: PUSH
6659: LD_INT 2
6661: ARRAY
6662: PUSH
6663: LD_INT 1
6665: PLUS
6666: PPUSH
6667: CALL_OW 1
6671: ST_TO_ADDR
// if TASettings [ 2 ] = 9 then
6672: LD_EXP 9
6676: PUSH
6677: LD_INT 2
6679: ARRAY
6680: PUSH
6681: LD_INT 9
6683: EQUAL
6684: IFFALSE 6695
// DestroyUnit ( u ) ;
6686: LD_VAR 0 2
6690: PPUSH
6691: CALL_OW 65
// end ;
6695: GO 6620
6697: POP
6698: POP
// for z = 1 to TeamB do
6699: LD_ADDR_VAR 0 8
6703: PUSH
6704: DOUBLE
6705: LD_INT 1
6707: DEC
6708: ST_TO_ADDR
6709: LD_EXP 8
6713: PUSH
6714: FOR_TO
6715: IFFALSE 6791
// if TeamB [ z ] = s then
6717: LD_EXP 8
6721: PUSH
6722: LD_VAR 0 8
6726: ARRAY
6727: PUSH
6728: LD_VAR 0 4
6732: EQUAL
6733: IFFALSE 6789
// begin TBSettings := Replace ( TBSettings , 2 , TBSettings [ 2 ] + 1 ) ;
6735: LD_ADDR_EXP 10
6739: PUSH
6740: LD_EXP 10
6744: PPUSH
6745: LD_INT 2
6747: PPUSH
6748: LD_EXP 10
6752: PUSH
6753: LD_INT 2
6755: ARRAY
6756: PUSH
6757: LD_INT 1
6759: PLUS
6760: PPUSH
6761: CALL_OW 1
6765: ST_TO_ADDR
// if TBSettings [ 2 ] = 9 then
6766: LD_EXP 10
6770: PUSH
6771: LD_INT 2
6773: ARRAY
6774: PUSH
6775: LD_INT 9
6777: EQUAL
6778: IFFALSE 6789
// DestroyUnit ( u ) ;
6780: LD_VAR 0 2
6784: PPUSH
6785: CALL_OW 65
// end ;
6789: GO 6714
6791: POP
6792: POP
// exit ;
6793: GO 9162
// end ; if i = 7 then
6795: LD_VAR 0 3
6799: PUSH
6800: LD_INT 7
6802: EQUAL
6803: IFFALSE 6975
// begin for z = 1 to TeamA do
6805: LD_ADDR_VAR 0 8
6809: PUSH
6810: DOUBLE
6811: LD_INT 1
6813: DEC
6814: ST_TO_ADDR
6815: LD_EXP 7
6819: PUSH
6820: FOR_TO
6821: IFFALSE 6887
// if TeamA [ z ] = s then
6823: LD_EXP 7
6827: PUSH
6828: LD_VAR 0 8
6832: ARRAY
6833: PUSH
6834: LD_VAR 0 4
6838: EQUAL
6839: IFFALSE 6885
// begin TASettings := Replace ( TASettings , 3 , 9 ) ;
6841: LD_ADDR_EXP 9
6845: PUSH
6846: LD_EXP 9
6850: PPUSH
6851: LD_INT 3
6853: PPUSH
6854: LD_INT 9
6856: PPUSH
6857: CALL_OW 1
6861: ST_TO_ADDR
// if TASettings [ 3 ] = 9 then
6862: LD_EXP 9
6866: PUSH
6867: LD_INT 3
6869: ARRAY
6870: PUSH
6871: LD_INT 9
6873: EQUAL
6874: IFFALSE 6885
// DestroyUnit ( u ) ;
6876: LD_VAR 0 2
6880: PPUSH
6881: CALL_OW 65
// end ;
6885: GO 6820
6887: POP
6888: POP
// for z = 1 to TeamB do
6889: LD_ADDR_VAR 0 8
6893: PUSH
6894: DOUBLE
6895: LD_INT 1
6897: DEC
6898: ST_TO_ADDR
6899: LD_EXP 8
6903: PUSH
6904: FOR_TO
6905: IFFALSE 6971
// if TeamB [ z ] = s then
6907: LD_EXP 8
6911: PUSH
6912: LD_VAR 0 8
6916: ARRAY
6917: PUSH
6918: LD_VAR 0 4
6922: EQUAL
6923: IFFALSE 6969
// begin TBSettings := Replace ( TBSettings , 3 , 9 ) ;
6925: LD_ADDR_EXP 10
6929: PUSH
6930: LD_EXP 10
6934: PPUSH
6935: LD_INT 3
6937: PPUSH
6938: LD_INT 9
6940: PPUSH
6941: CALL_OW 1
6945: ST_TO_ADDR
// if TBSettings [ 3 ] = 9 then
6946: LD_EXP 10
6950: PUSH
6951: LD_INT 3
6953: ARRAY
6954: PUSH
6955: LD_INT 9
6957: EQUAL
6958: IFFALSE 6969
// DestroyUnit ( u ) ;
6960: LD_VAR 0 2
6964: PPUSH
6965: CALL_OW 65
// end ;
6969: GO 6904
6971: POP
6972: POP
// exit ;
6973: GO 9162
// end ; if i = 8 then
6975: LD_VAR 0 3
6979: PUSH
6980: LD_INT 8
6982: EQUAL
6983: IFFALSE 7275
// begin for z = 1 to TeamA do
6985: LD_ADDR_VAR 0 8
6989: PUSH
6990: DOUBLE
6991: LD_INT 1
6993: DEC
6994: ST_TO_ADDR
6995: LD_EXP 7
6999: PUSH
7000: FOR_TO
7001: IFFALSE 7127
// if TeamA [ z ] = s then
7003: LD_EXP 7
7007: PUSH
7008: LD_VAR 0 8
7012: ARRAY
7013: PUSH
7014: LD_VAR 0 4
7018: EQUAL
7019: IFFALSE 7125
// begin uc_side = freesides [ 1 ] ;
7021: LD_ADDR_OWVAR 20
7025: PUSH
7026: LD_EXP 4
7030: PUSH
7031: LD_INT 1
7033: ARRAY
7034: ST_TO_ADDR
// uc_nation = 2 ;
7035: LD_ADDR_OWVAR 21
7039: PUSH
7040: LD_INT 2
7042: ST_TO_ADDR
// vc_chassis = 11 ;
7043: LD_ADDR_OWVAR 37
7047: PUSH
7048: LD_INT 11
7050: ST_TO_ADDR
// vc_weapon = 29 ;
7051: LD_ADDR_OWVAR 40
7055: PUSH
7056: LD_INT 29
7058: ST_TO_ADDR
// vc_engine = 1 ;
7059: LD_ADDR_OWVAR 39
7063: PUSH
7064: LD_INT 1
7066: ST_TO_ADDR
// vc_control = 3 ;
7067: LD_ADDR_OWVAR 38
7071: PUSH
7072: LD_INT 3
7074: ST_TO_ADDR
// id = createvehicle ;
7075: LD_ADDR_VAR 0 9
7079: PUSH
7080: CALL_OW 45
7084: ST_TO_ADDR
// PlaceUnitArea ( id , botspawn , false ) ;
7085: LD_VAR 0 9
7089: PPUSH
7090: LD_INT 7
7092: PPUSH
7093: LD_INT 0
7095: PPUSH
7096: CALL_OW 49
// id = createvehicle ;
7100: LD_ADDR_VAR 0 9
7104: PUSH
7105: CALL_OW 45
7109: ST_TO_ADDR
// PlaceUnitArea ( id , botspawn , false ) ;
7110: LD_VAR 0 9
7114: PPUSH
7115: LD_INT 7
7117: PPUSH
7118: LD_INT 0
7120: PPUSH
7121: CALL_OW 49
// end ;
7125: GO 7000
7127: POP
7128: POP
// for z = 1 to TeamB do
7129: LD_ADDR_VAR 0 8
7133: PUSH
7134: DOUBLE
7135: LD_INT 1
7137: DEC
7138: ST_TO_ADDR
7139: LD_EXP 8
7143: PUSH
7144: FOR_TO
7145: IFFALSE 7271
// if TeamB [ z ] = s then
7147: LD_EXP 8
7151: PUSH
7152: LD_VAR 0 8
7156: ARRAY
7157: PUSH
7158: LD_VAR 0 4
7162: EQUAL
7163: IFFALSE 7269
// begin uc_side = freesides [ 2 ] ;
7165: LD_ADDR_OWVAR 20
7169: PUSH
7170: LD_EXP 4
7174: PUSH
7175: LD_INT 2
7177: ARRAY
7178: ST_TO_ADDR
// uc_nation = 2 ;
7179: LD_ADDR_OWVAR 21
7183: PUSH
7184: LD_INT 2
7186: ST_TO_ADDR
// vc_chassis = 11 ;
7187: LD_ADDR_OWVAR 37
7191: PUSH
7192: LD_INT 11
7194: ST_TO_ADDR
// vc_weapon = 29 ;
7195: LD_ADDR_OWVAR 40
7199: PUSH
7200: LD_INT 29
7202: ST_TO_ADDR
// vc_engine = 1 ;
7203: LD_ADDR_OWVAR 39
7207: PUSH
7208: LD_INT 1
7210: ST_TO_ADDR
// vc_control = 3 ;
7211: LD_ADDR_OWVAR 38
7215: PUSH
7216: LD_INT 3
7218: ST_TO_ADDR
// id = createvehicle ;
7219: LD_ADDR_VAR 0 9
7223: PUSH
7224: CALL_OW 45
7228: ST_TO_ADDR
// PlaceUnitArea ( id , topspawn , false ) ;
7229: LD_VAR 0 9
7233: PPUSH
7234: LD_INT 6
7236: PPUSH
7237: LD_INT 0
7239: PPUSH
7240: CALL_OW 49
// id = createvehicle ;
7244: LD_ADDR_VAR 0 9
7248: PUSH
7249: CALL_OW 45
7253: ST_TO_ADDR
// PlaceUnitArea ( id , topspawn , false ) ;
7254: LD_VAR 0 9
7258: PPUSH
7259: LD_INT 6
7261: PPUSH
7262: LD_INT 0
7264: PPUSH
7265: CALL_OW 49
// end ;
7269: GO 7144
7271: POP
7272: POP
// exit ;
7273: GO 9162
// end ; if i = 9 then
7275: LD_VAR 0 3
7279: PUSH
7280: LD_INT 9
7282: EQUAL
7283: IFFALSE 7575
// begin for z = 1 to TeamA do
7285: LD_ADDR_VAR 0 8
7289: PUSH
7290: DOUBLE
7291: LD_INT 1
7293: DEC
7294: ST_TO_ADDR
7295: LD_EXP 7
7299: PUSH
7300: FOR_TO
7301: IFFALSE 7427
// if TeamA [ z ] = s then
7303: LD_EXP 7
7307: PUSH
7308: LD_VAR 0 8
7312: ARRAY
7313: PUSH
7314: LD_VAR 0 4
7318: EQUAL
7319: IFFALSE 7425
// begin uc_side = freesides [ 1 ] ;
7321: LD_ADDR_OWVAR 20
7325: PUSH
7326: LD_EXP 4
7330: PUSH
7331: LD_INT 1
7333: ARRAY
7334: ST_TO_ADDR
// uc_nation = 2 ;
7335: LD_ADDR_OWVAR 21
7339: PUSH
7340: LD_INT 2
7342: ST_TO_ADDR
// vc_chassis = 11 ;
7343: LD_ADDR_OWVAR 37
7347: PUSH
7348: LD_INT 11
7350: ST_TO_ADDR
// vc_weapon = 10 ;
7351: LD_ADDR_OWVAR 40
7355: PUSH
7356: LD_INT 10
7358: ST_TO_ADDR
// vc_engine = 1 ;
7359: LD_ADDR_OWVAR 39
7363: PUSH
7364: LD_INT 1
7366: ST_TO_ADDR
// vc_control = 3 ;
7367: LD_ADDR_OWVAR 38
7371: PUSH
7372: LD_INT 3
7374: ST_TO_ADDR
// id = createvehicle ;
7375: LD_ADDR_VAR 0 9
7379: PUSH
7380: CALL_OW 45
7384: ST_TO_ADDR
// PlaceUnitArea ( id , botspawn , false ) ;
7385: LD_VAR 0 9
7389: PPUSH
7390: LD_INT 7
7392: PPUSH
7393: LD_INT 0
7395: PPUSH
7396: CALL_OW 49
// id = createvehicle ;
7400: LD_ADDR_VAR 0 9
7404: PUSH
7405: CALL_OW 45
7409: ST_TO_ADDR
// PlaceUnitArea ( id , botspawn , false ) ;
7410: LD_VAR 0 9
7414: PPUSH
7415: LD_INT 7
7417: PPUSH
7418: LD_INT 0
7420: PPUSH
7421: CALL_OW 49
// end ;
7425: GO 7300
7427: POP
7428: POP
// for z = 1 to TeamB do
7429: LD_ADDR_VAR 0 8
7433: PUSH
7434: DOUBLE
7435: LD_INT 1
7437: DEC
7438: ST_TO_ADDR
7439: LD_EXP 8
7443: PUSH
7444: FOR_TO
7445: IFFALSE 7571
// if TeamB [ z ] = s then
7447: LD_EXP 8
7451: PUSH
7452: LD_VAR 0 8
7456: ARRAY
7457: PUSH
7458: LD_VAR 0 4
7462: EQUAL
7463: IFFALSE 7569
// begin uc_side = freesides [ 2 ] ;
7465: LD_ADDR_OWVAR 20
7469: PUSH
7470: LD_EXP 4
7474: PUSH
7475: LD_INT 2
7477: ARRAY
7478: ST_TO_ADDR
// uc_nation = 2 ;
7479: LD_ADDR_OWVAR 21
7483: PUSH
7484: LD_INT 2
7486: ST_TO_ADDR
// vc_chassis = 11 ;
7487: LD_ADDR_OWVAR 37
7491: PUSH
7492: LD_INT 11
7494: ST_TO_ADDR
// vc_weapon = 10 ;
7495: LD_ADDR_OWVAR 40
7499: PUSH
7500: LD_INT 10
7502: ST_TO_ADDR
// vc_engine = 1 ;
7503: LD_ADDR_OWVAR 39
7507: PUSH
7508: LD_INT 1
7510: ST_TO_ADDR
// vc_control = 3 ;
7511: LD_ADDR_OWVAR 38
7515: PUSH
7516: LD_INT 3
7518: ST_TO_ADDR
// id = createvehicle ;
7519: LD_ADDR_VAR 0 9
7523: PUSH
7524: CALL_OW 45
7528: ST_TO_ADDR
// PlaceUnitArea ( id , topspawn , false ) ;
7529: LD_VAR 0 9
7533: PPUSH
7534: LD_INT 6
7536: PPUSH
7537: LD_INT 0
7539: PPUSH
7540: CALL_OW 49
// id = createvehicle ;
7544: LD_ADDR_VAR 0 9
7548: PUSH
7549: CALL_OW 45
7553: ST_TO_ADDR
// PlaceUnitArea ( id , topspawn , false ) ;
7554: LD_VAR 0 9
7558: PPUSH
7559: LD_INT 6
7561: PPUSH
7562: LD_INT 0
7564: PPUSH
7565: CALL_OW 49
// end ;
7569: GO 7444
7571: POP
7572: POP
// exit ;
7573: GO 9162
// end ; if i = 10 then
7575: LD_VAR 0 3
7579: PUSH
7580: LD_INT 10
7582: EQUAL
7583: IFFALSE 7877
// begin for z = 1 to TeamA do
7585: LD_ADDR_VAR 0 8
7589: PUSH
7590: DOUBLE
7591: LD_INT 1
7593: DEC
7594: ST_TO_ADDR
7595: LD_EXP 7
7599: PUSH
7600: FOR_TO
7601: IFFALSE 7728
// if TeamA [ z ] = s then
7603: LD_EXP 7
7607: PUSH
7608: LD_VAR 0 8
7612: ARRAY
7613: PUSH
7614: LD_VAR 0 4
7618: EQUAL
7619: IFFALSE 7726
// begin TASettings := Replace ( TASettings , 3 , TASettings [ 3 ] + 1 ) ;
7621: LD_ADDR_EXP 9
7625: PUSH
7626: LD_EXP 9
7630: PPUSH
7631: LD_INT 3
7633: PPUSH
7634: LD_EXP 9
7638: PUSH
7639: LD_INT 3
7641: ARRAY
7642: PUSH
7643: LD_INT 1
7645: PLUS
7646: PPUSH
7647: CALL_OW 1
7651: ST_TO_ADDR
// for w = 1 to TASettings [ 3 ] do
7652: LD_ADDR_VAR 0 13
7656: PUSH
7657: DOUBLE
7658: LD_INT 1
7660: DEC
7661: ST_TO_ADDR
7662: LD_EXP 9
7666: PUSH
7667: LD_INT 3
7669: ARRAY
7670: PUSH
7671: FOR_TO
7672: IFFALSE 7701
// SetTech ( 56 + w , freesides [ 1 ] , 2 ) ;
7674: LD_INT 56
7676: PUSH
7677: LD_VAR 0 13
7681: PLUS
7682: PPUSH
7683: LD_EXP 4
7687: PUSH
7688: LD_INT 1
7690: ARRAY
7691: PPUSH
7692: LD_INT 2
7694: PPUSH
7695: CALL_OW 322
7699: GO 7671
7701: POP
7702: POP
// if TASettings [ 3 ] >= 3 then
7703: LD_EXP 9
7707: PUSH
7708: LD_INT 3
7710: ARRAY
7711: PUSH
7712: LD_INT 3
7714: GREATEREQUAL
7715: IFFALSE 7726
// DestroyUnit ( u ) ;
7717: LD_VAR 0 2
7721: PPUSH
7722: CALL_OW 65
// end ;
7726: GO 7600
7728: POP
7729: POP
// for z = 1 to TeamB do
7730: LD_ADDR_VAR 0 8
7734: PUSH
7735: DOUBLE
7736: LD_INT 1
7738: DEC
7739: ST_TO_ADDR
7740: LD_EXP 8
7744: PUSH
7745: FOR_TO
7746: IFFALSE 7873
// if TeamB [ z ] = s then
7748: LD_EXP 8
7752: PUSH
7753: LD_VAR 0 8
7757: ARRAY
7758: PUSH
7759: LD_VAR 0 4
7763: EQUAL
7764: IFFALSE 7871
// begin TBSettings := Replace ( TBSettings , 3 , TBSettings [ 3 ] + 1 ) ;
7766: LD_ADDR_EXP 10
7770: PUSH
7771: LD_EXP 10
7775: PPUSH
7776: LD_INT 3
7778: PPUSH
7779: LD_EXP 10
7783: PUSH
7784: LD_INT 3
7786: ARRAY
7787: PUSH
7788: LD_INT 1
7790: PLUS
7791: PPUSH
7792: CALL_OW 1
7796: ST_TO_ADDR
// for w = 1 to TBSettings [ 3 ] do
7797: LD_ADDR_VAR 0 13
7801: PUSH
7802: DOUBLE
7803: LD_INT 1
7805: DEC
7806: ST_TO_ADDR
7807: LD_EXP 10
7811: PUSH
7812: LD_INT 3
7814: ARRAY
7815: PUSH
7816: FOR_TO
7817: IFFALSE 7846
// SetTech ( 56 + w , freesides [ 2 ] , 2 ) ;
7819: LD_INT 56
7821: PUSH
7822: LD_VAR 0 13
7826: PLUS
7827: PPUSH
7828: LD_EXP 4
7832: PUSH
7833: LD_INT 2
7835: ARRAY
7836: PPUSH
7837: LD_INT 2
7839: PPUSH
7840: CALL_OW 322
7844: GO 7816
7846: POP
7847: POP
// if TBSettings [ 3 ] >= 3 then
7848: LD_EXP 10
7852: PUSH
7853: LD_INT 3
7855: ARRAY
7856: PUSH
7857: LD_INT 3
7859: GREATEREQUAL
7860: IFFALSE 7871
// DestroyUnit ( u ) ;
7862: LD_VAR 0 2
7866: PPUSH
7867: CALL_OW 65
// end ;
7871: GO 7745
7873: POP
7874: POP
// exit ;
7875: GO 9162
// end ; if i = 11 then
7877: LD_VAR 0 3
7881: PUSH
7882: LD_INT 11
7884: EQUAL
7885: IFFALSE 8069
// begin uc_side = s ;
7887: LD_ADDR_OWVAR 20
7891: PUSH
7892: LD_VAR 0 4
7896: ST_TO_ADDR
// uc_nation = 0 ;
7897: LD_ADDR_OWVAR 21
7901: PUSH
7902: LD_INT 0
7904: ST_TO_ADDR
// hc_name =  ;
7905: LD_ADDR_OWVAR 26
7909: PUSH
7910: LD_STRING 
7912: ST_TO_ADDR
// hc_skills = [ 0 , 0 , 0 , 0 ] ;
7913: LD_ADDR_OWVAR 31
7917: PUSH
7918: LD_INT 0
7920: PUSH
7921: LD_INT 0
7923: PUSH
7924: LD_INT 0
7926: PUSH
7927: LD_INT 0
7929: PUSH
7930: EMPTY
7931: LIST
7932: LIST
7933: LIST
7934: LIST
7935: ST_TO_ADDR
// hc_class = 12 ;
7936: LD_ADDR_OWVAR 28
7940: PUSH
7941: LD_INT 12
7943: ST_TO_ADDR
// hc_sex = rand ( sex_male , sex_female ) ;
7944: LD_ADDR_OWVAR 27
7948: PUSH
7949: LD_INT 1
7951: PPUSH
7952: LD_INT 2
7954: PPUSH
7955: CALL_OW 12
7959: ST_TO_ADDR
// id = createhuman ;
7960: LD_ADDR_VAR 0 9
7964: PUSH
7965: CALL_OW 44
7969: ST_TO_ADDR
// base = FilterAllUnits ( [ [ f_or , [ f_btype , b_depot ] , [ f_btype , b_warehouse ] ] , [ f_side , s ] ] ) ;
7970: LD_ADDR_VAR 0 12
7974: PUSH
7975: LD_INT 2
7977: PUSH
7978: LD_INT 30
7980: PUSH
7981: LD_INT 0
7983: PUSH
7984: EMPTY
7985: LIST
7986: LIST
7987: PUSH
7988: LD_INT 30
7990: PUSH
7991: LD_INT 1
7993: PUSH
7994: EMPTY
7995: LIST
7996: LIST
7997: PUSH
7998: EMPTY
7999: LIST
8000: LIST
8001: LIST
8002: PUSH
8003: LD_INT 22
8005: PUSH
8006: LD_VAR 0 4
8010: PUSH
8011: EMPTY
8012: LIST
8013: LIST
8014: PUSH
8015: EMPTY
8016: LIST
8017: LIST
8018: PPUSH
8019: CALL_OW 69
8023: ST_TO_ADDR
// PlaceUnitXYR ( CreateHuman , GetX ( base [ 1 ] ) , GetY ( base [ 1 ] ) , 13 , true ) ;
8024: CALL_OW 44
8028: PPUSH
8029: LD_VAR 0 12
8033: PUSH
8034: LD_INT 1
8036: ARRAY
8037: PPUSH
8038: CALL_OW 250
8042: PPUSH
8043: LD_VAR 0 12
8047: PUSH
8048: LD_INT 1
8050: ARRAY
8051: PPUSH
8052: CALL_OW 251
8056: PPUSH
8057: LD_INT 13
8059: PPUSH
8060: LD_INT 1
8062: PPUSH
8063: CALL_OW 50
// exit ;
8067: GO 9162
// end ; if i = 12 then
8069: LD_VAR 0 3
8073: PUSH
8074: LD_INT 12
8076: EQUAL
8077: IFFALSE 8381
// begin for z = 1 to TeamA do
8079: LD_ADDR_VAR 0 8
8083: PUSH
8084: DOUBLE
8085: LD_INT 1
8087: DEC
8088: ST_TO_ADDR
8089: LD_EXP 7
8093: PUSH
8094: FOR_TO
8095: IFFALSE 8227
// if TeamA [ z ] = s then
8097: LD_EXP 7
8101: PUSH
8102: LD_VAR 0 8
8106: ARRAY
8107: PUSH
8108: LD_VAR 0 4
8112: EQUAL
8113: IFFALSE 8225
// begin SetTech ( 31 , freesides [ 1 ] , 2 ) ;
8115: LD_INT 31
8117: PPUSH
8118: LD_EXP 4
8122: PUSH
8123: LD_INT 1
8125: ARRAY
8126: PPUSH
8127: LD_INT 2
8129: PPUSH
8130: CALL_OW 322
// uc_side = freesides [ 1 ] ;
8134: LD_ADDR_OWVAR 20
8138: PUSH
8139: LD_EXP 4
8143: PUSH
8144: LD_INT 1
8146: ARRAY
8147: ST_TO_ADDR
// uc_nation = 2 ;
8148: LD_ADDR_OWVAR 21
8152: PUSH
8153: LD_INT 2
8155: ST_TO_ADDR
// vc_chassis = p [ TASettings [ 2 ] ] ;
8156: LD_ADDR_OWVAR 37
8160: PUSH
8161: LD_VAR 0 11
8165: PUSH
8166: LD_EXP 9
8170: PUSH
8171: LD_INT 2
8173: ARRAY
8174: ARRAY
8175: ST_TO_ADDR
// vc_weapon = 49 ;
8176: LD_ADDR_OWVAR 40
8180: PUSH
8181: LD_INT 49
8183: ST_TO_ADDR
// vc_engine = 1 ;
8184: LD_ADDR_OWVAR 39
8188: PUSH
8189: LD_INT 1
8191: ST_TO_ADDR
// vc_control = 3 ;
8192: LD_ADDR_OWVAR 38
8196: PUSH
8197: LD_INT 3
8199: ST_TO_ADDR
// id = createvehicle ;
8200: LD_ADDR_VAR 0 9
8204: PUSH
8205: CALL_OW 45
8209: ST_TO_ADDR
// PlaceUnitArea ( id , botspawn , false ) ;
8210: LD_VAR 0 9
8214: PPUSH
8215: LD_INT 7
8217: PPUSH
8218: LD_INT 0
8220: PPUSH
8221: CALL_OW 49
// end ;
8225: GO 8094
8227: POP
8228: POP
// for z = 1 to TeamB do
8229: LD_ADDR_VAR 0 8
8233: PUSH
8234: DOUBLE
8235: LD_INT 1
8237: DEC
8238: ST_TO_ADDR
8239: LD_EXP 8
8243: PUSH
8244: FOR_TO
8245: IFFALSE 8377
// if TeamB [ z ] = s then
8247: LD_EXP 8
8251: PUSH
8252: LD_VAR 0 8
8256: ARRAY
8257: PUSH
8258: LD_VAR 0 4
8262: EQUAL
8263: IFFALSE 8375
// begin SetTech ( 31 , freesides [ 2 ] , 2 ) ;
8265: LD_INT 31
8267: PPUSH
8268: LD_EXP 4
8272: PUSH
8273: LD_INT 2
8275: ARRAY
8276: PPUSH
8277: LD_INT 2
8279: PPUSH
8280: CALL_OW 322
// uc_side = freesides [ 2 ] ;
8284: LD_ADDR_OWVAR 20
8288: PUSH
8289: LD_EXP 4
8293: PUSH
8294: LD_INT 2
8296: ARRAY
8297: ST_TO_ADDR
// uc_nation = 2 ;
8298: LD_ADDR_OWVAR 21
8302: PUSH
8303: LD_INT 2
8305: ST_TO_ADDR
// vc_chassis = p [ TBSettings [ 2 ] ] ;
8306: LD_ADDR_OWVAR 37
8310: PUSH
8311: LD_VAR 0 11
8315: PUSH
8316: LD_EXP 10
8320: PUSH
8321: LD_INT 2
8323: ARRAY
8324: ARRAY
8325: ST_TO_ADDR
// vc_weapon = 49 ;
8326: LD_ADDR_OWVAR 40
8330: PUSH
8331: LD_INT 49
8333: ST_TO_ADDR
// vc_engine = 1 ;
8334: LD_ADDR_OWVAR 39
8338: PUSH
8339: LD_INT 1
8341: ST_TO_ADDR
// vc_control = 3 ;
8342: LD_ADDR_OWVAR 38
8346: PUSH
8347: LD_INT 3
8349: ST_TO_ADDR
// id = createvehicle ;
8350: LD_ADDR_VAR 0 9
8354: PUSH
8355: CALL_OW 45
8359: ST_TO_ADDR
// PlaceUnitArea ( id , topspawn , false ) ;
8360: LD_VAR 0 9
8364: PPUSH
8365: LD_INT 6
8367: PPUSH
8368: LD_INT 0
8370: PPUSH
8371: CALL_OW 49
// end ;
8375: GO 8244
8377: POP
8378: POP
// exit ;
8379: GO 9162
// end ; if i = 13 then
8381: LD_VAR 0 3
8385: PUSH
8386: LD_INT 13
8388: EQUAL
8389: IFFALSE 8627
// begin for z = 1 to TeamA do
8391: LD_ADDR_VAR 0 8
8395: PUSH
8396: DOUBLE
8397: LD_INT 1
8399: DEC
8400: ST_TO_ADDR
8401: LD_EXP 7
8405: PUSH
8406: FOR_TO
8407: IFFALSE 8506
// if TeamA [ z ] = s then
8409: LD_EXP 7
8413: PUSH
8414: LD_VAR 0 8
8418: ARRAY
8419: PUSH
8420: LD_VAR 0 4
8424: EQUAL
8425: IFFALSE 8504
// begin base = FilterAllUnits ( [ [ f_side , freesides [ 2 ] ] , [ f_type , unit_human ] ] ) ;
8427: LD_ADDR_VAR 0 12
8431: PUSH
8432: LD_INT 22
8434: PUSH
8435: LD_EXP 4
8439: PUSH
8440: LD_INT 2
8442: ARRAY
8443: PUSH
8444: EMPTY
8445: LIST
8446: LIST
8447: PUSH
8448: LD_INT 21
8450: PUSH
8451: LD_INT 1
8453: PUSH
8454: EMPTY
8455: LIST
8456: LIST
8457: PUSH
8458: EMPTY
8459: LIST
8460: LIST
8461: PPUSH
8462: CALL_OW 69
8466: ST_TO_ADDR
// for i = 1 to base do
8467: LD_ADDR_VAR 0 3
8471: PUSH
8472: DOUBLE
8473: LD_INT 1
8475: DEC
8476: ST_TO_ADDR
8477: LD_VAR 0 12
8481: PUSH
8482: FOR_TO
8483: IFFALSE 8502
// DestroyUnit ( base [ i ] ) ;
8485: LD_VAR 0 12
8489: PUSH
8490: LD_VAR 0 3
8494: ARRAY
8495: PPUSH
8496: CALL_OW 65
8500: GO 8482
8502: POP
8503: POP
// end ;
8504: GO 8406
8506: POP
8507: POP
// for z = 1 to TeamB do
8508: LD_ADDR_VAR 0 8
8512: PUSH
8513: DOUBLE
8514: LD_INT 1
8516: DEC
8517: ST_TO_ADDR
8518: LD_EXP 8
8522: PUSH
8523: FOR_TO
8524: IFFALSE 8623
// if TeamB [ z ] = s then
8526: LD_EXP 8
8530: PUSH
8531: LD_VAR 0 8
8535: ARRAY
8536: PUSH
8537: LD_VAR 0 4
8541: EQUAL
8542: IFFALSE 8621
// begin base = FilterAllUnits ( [ [ f_side , freesides [ 1 ] ] , [ f_type , unit_human ] ] ) ;
8544: LD_ADDR_VAR 0 12
8548: PUSH
8549: LD_INT 22
8551: PUSH
8552: LD_EXP 4
8556: PUSH
8557: LD_INT 1
8559: ARRAY
8560: PUSH
8561: EMPTY
8562: LIST
8563: LIST
8564: PUSH
8565: LD_INT 21
8567: PUSH
8568: LD_INT 1
8570: PUSH
8571: EMPTY
8572: LIST
8573: LIST
8574: PUSH
8575: EMPTY
8576: LIST
8577: LIST
8578: PPUSH
8579: CALL_OW 69
8583: ST_TO_ADDR
// for i = 1 to base do
8584: LD_ADDR_VAR 0 3
8588: PUSH
8589: DOUBLE
8590: LD_INT 1
8592: DEC
8593: ST_TO_ADDR
8594: LD_VAR 0 12
8598: PUSH
8599: FOR_TO
8600: IFFALSE 8619
// DestroyUnit ( base [ i ] ) ;
8602: LD_VAR 0 12
8606: PUSH
8607: LD_VAR 0 3
8611: ARRAY
8612: PPUSH
8613: CALL_OW 65
8617: GO 8599
8619: POP
8620: POP
// end ;
8621: GO 8523
8623: POP
8624: POP
// exit ;
8625: GO 9162
// end ; if i = 14 then
8627: LD_VAR 0 3
8631: PUSH
8632: LD_INT 14
8634: EQUAL
8635: IFFALSE 8954
// begin base = FilterAllUnits ( [ [ f_or , [ f_btype , b_depot ] , [ f_btype , b_warehouse ] ] , [ f_side , s ] ] ) ;
8637: LD_ADDR_VAR 0 12
8641: PUSH
8642: LD_INT 2
8644: PUSH
8645: LD_INT 30
8647: PUSH
8648: LD_INT 0
8650: PUSH
8651: EMPTY
8652: LIST
8653: LIST
8654: PUSH
8655: LD_INT 30
8657: PUSH
8658: LD_INT 1
8660: PUSH
8661: EMPTY
8662: LIST
8663: LIST
8664: PUSH
8665: EMPTY
8666: LIST
8667: LIST
8668: LIST
8669: PUSH
8670: LD_INT 22
8672: PUSH
8673: LD_VAR 0 4
8677: PUSH
8678: EMPTY
8679: LIST
8680: LIST
8681: PUSH
8682: EMPTY
8683: LIST
8684: LIST
8685: PPUSH
8686: CALL_OW 69
8690: ST_TO_ADDR
// uc_side = s ;
8691: LD_ADDR_OWVAR 20
8695: PUSH
8696: LD_VAR 0 4
8700: ST_TO_ADDR
// uc_nation = 1 ;
8701: LD_ADDR_OWVAR 21
8705: PUSH
8706: LD_INT 1
8708: ST_TO_ADDR
// bc_type = 27 ;
8709: LD_ADDR_OWVAR 42
8713: PUSH
8714: LD_INT 27
8716: ST_TO_ADDR
// if HexInfo ( GetX ( base [ 1 ] ) - 5 , GetY ( base [ 1 ] ) - 1 ) > 0 then
8717: LD_VAR 0 12
8721: PUSH
8722: LD_INT 1
8724: ARRAY
8725: PPUSH
8726: CALL_OW 250
8730: PUSH
8731: LD_INT 5
8733: MINUS
8734: PPUSH
8735: LD_VAR 0 12
8739: PUSH
8740: LD_INT 1
8742: ARRAY
8743: PPUSH
8744: CALL_OW 251
8748: PUSH
8749: LD_INT 1
8751: MINUS
8752: PPUSH
8753: CALL_OW 428
8757: PUSH
8758: LD_INT 0
8760: GREATER
8761: IFFALSE 8804
// DestroyUnit ( HexInfo ( GetX ( base [ 1 ] ) - 5 , GetY ( base [ 1 ] ) ) ) ;
8763: LD_VAR 0 12
8767: PUSH
8768: LD_INT 1
8770: ARRAY
8771: PPUSH
8772: CALL_OW 250
8776: PUSH
8777: LD_INT 5
8779: MINUS
8780: PPUSH
8781: LD_VAR 0 12
8785: PUSH
8786: LD_INT 1
8788: ARRAY
8789: PPUSH
8790: CALL_OW 251
8794: PPUSH
8795: CALL_OW 428
8799: PPUSH
8800: CALL_OW 65
// if HexInfo ( GetX ( base [ 1 ] ) - 4 , GetY ( base [ 1 ] ) + 1 ) > 0 then
8804: LD_VAR 0 12
8808: PUSH
8809: LD_INT 1
8811: ARRAY
8812: PPUSH
8813: CALL_OW 250
8817: PUSH
8818: LD_INT 4
8820: MINUS
8821: PPUSH
8822: LD_VAR 0 12
8826: PUSH
8827: LD_INT 1
8829: ARRAY
8830: PPUSH
8831: CALL_OW 251
8835: PUSH
8836: LD_INT 1
8838: PLUS
8839: PPUSH
8840: CALL_OW 428
8844: PUSH
8845: LD_INT 0
8847: GREATER
8848: IFFALSE 8891
// DestroyUnit ( HexInfo ( GetX ( base [ 1 ] ) - 5 , GetY ( base [ 1 ] ) ) ) ;
8850: LD_VAR 0 12
8854: PUSH
8855: LD_INT 1
8857: ARRAY
8858: PPUSH
8859: CALL_OW 250
8863: PUSH
8864: LD_INT 5
8866: MINUS
8867: PPUSH
8868: LD_VAR 0 12
8872: PUSH
8873: LD_INT 1
8875: ARRAY
8876: PPUSH
8877: CALL_OW 251
8881: PPUSH
8882: CALL_OW 428
8886: PPUSH
8887: CALL_OW 65
// k = CreateAndPlaceBuildingXYD ( GetX ( base [ 1 ] ) - 5 , GetY ( base [ 1 ] ) , 1 ) ;
8891: LD_ADDR_VAR 0 14
8895: PUSH
8896: LD_VAR 0 12
8900: PUSH
8901: LD_INT 1
8903: ARRAY
8904: PPUSH
8905: CALL_OW 250
8909: PUSH
8910: LD_INT 5
8912: MINUS
8913: PPUSH
8914: LD_VAR 0 12
8918: PUSH
8919: LD_INT 1
8921: ARRAY
8922: PPUSH
8923: CALL_OW 251
8927: PPUSH
8928: LD_INT 1
8930: PPUSH
8931: CALL_OW 47
8935: ST_TO_ADDR
// wait ( 0 0$35 ) ;
8936: LD_INT 1225
8938: PPUSH
8939: CALL_OW 67
// DestroyUnit ( k ) ;
8943: LD_VAR 0 14
8947: PPUSH
8948: CALL_OW 65
// exit ;
8952: GO 9162
// end ; if i = 15 then
8954: LD_VAR 0 3
8958: PUSH
8959: LD_INT 15
8961: EQUAL
8962: IFFALSE 9162
// begin uc_side = s ;
8964: LD_ADDR_OWVAR 20
8968: PUSH
8969: LD_VAR 0 4
8973: ST_TO_ADDR
// uc_nation = mp_sides_nations [ s ] ;
8974: LD_ADDR_OWVAR 21
8978: PUSH
8979: LD_OWVAR 16
8983: PUSH
8984: LD_VAR 0 4
8988: ARRAY
8989: ST_TO_ADDR
// hc_name =  ;
8990: LD_ADDR_OWVAR 26
8994: PUSH
8995: LD_STRING 
8997: ST_TO_ADDR
// hc_skills = [ 0 , 0 , 0 , 0 ] ;
8998: LD_ADDR_OWVAR 31
9002: PUSH
9003: LD_INT 0
9005: PUSH
9006: LD_INT 0
9008: PUSH
9009: LD_INT 0
9011: PUSH
9012: LD_INT 0
9014: PUSH
9015: EMPTY
9016: LIST
9017: LIST
9018: LIST
9019: LIST
9020: ST_TO_ADDR
// hc_class = rand ( 1 , 4 ) ;
9021: LD_ADDR_OWVAR 28
9025: PUSH
9026: LD_INT 1
9028: PPUSH
9029: LD_INT 4
9031: PPUSH
9032: CALL_OW 12
9036: ST_TO_ADDR
// hc_sex = rand ( sex_male , sex_female ) ;
9037: LD_ADDR_OWVAR 27
9041: PUSH
9042: LD_INT 1
9044: PPUSH
9045: LD_INT 2
9047: PPUSH
9048: CALL_OW 12
9052: ST_TO_ADDR
// id = createhuman ;
9053: LD_ADDR_VAR 0 9
9057: PUSH
9058: CALL_OW 44
9062: ST_TO_ADDR
// base = FilterAllUnits ( [ [ f_or , [ f_btype , b_depot ] , [ f_btype , b_warehouse ] ] , [ f_side , s ] ] ) ;
9063: LD_ADDR_VAR 0 12
9067: PUSH
9068: LD_INT 2
9070: PUSH
9071: LD_INT 30
9073: PUSH
9074: LD_INT 0
9076: PUSH
9077: EMPTY
9078: LIST
9079: LIST
9080: PUSH
9081: LD_INT 30
9083: PUSH
9084: LD_INT 1
9086: PUSH
9087: EMPTY
9088: LIST
9089: LIST
9090: PUSH
9091: EMPTY
9092: LIST
9093: LIST
9094: LIST
9095: PUSH
9096: LD_INT 22
9098: PUSH
9099: LD_VAR 0 4
9103: PUSH
9104: EMPTY
9105: LIST
9106: LIST
9107: PUSH
9108: EMPTY
9109: LIST
9110: LIST
9111: PPUSH
9112: CALL_OW 69
9116: ST_TO_ADDR
// PlaceUnitXYR ( CreateHuman , GetX ( base [ 1 ] ) , GetY ( base [ 1 ] ) , 13 , true ) ;
9117: CALL_OW 44
9121: PPUSH
9122: LD_VAR 0 12
9126: PUSH
9127: LD_INT 1
9129: ARRAY
9130: PPUSH
9131: CALL_OW 250
9135: PPUSH
9136: LD_VAR 0 12
9140: PUSH
9141: LD_INT 1
9143: ARRAY
9144: PPUSH
9145: CALL_OW 251
9149: PPUSH
9150: LD_INT 13
9152: PPUSH
9153: LD_INT 1
9155: PPUSH
9156: CALL_OW 50
// exit ;
9160: GO 9162
// end ; end ; end ; end ; end ;
9162: PPOPN 14
9164: END
// every 0 0$01 do var i , k ;
9165: GO 9167
9167: DISABLE
9168: LD_INT 0
9170: PPUSH
9171: PPUSH
// begin i = 203 ;
9172: LD_ADDR_VAR 0 1
9176: PUSH
9177: LD_INT 203
9179: ST_TO_ADDR
// k = 247 ;
9180: LD_ADDR_VAR 0 2
9184: PUSH
9185: LD_INT 247
9187: ST_TO_ADDR
// repeat wait ( 0 0$0.1 ) ;
9188: LD_INT 4
9190: PPUSH
9191: CALL_OW 67
// SetAreaMapShow ( botspawn , 2 ) ;
9195: LD_INT 7
9197: PPUSH
9198: LD_INT 2
9200: PPUSH
9201: CALL_OW 424
// SetAreaMapShow ( topspawn , 2 ) ;
9205: LD_INT 6
9207: PPUSH
9208: LD_INT 2
9210: PPUSH
9211: CALL_OW 424
// MoveAreaXY ( topspawn , i , 14 ) ;
9215: LD_INT 6
9217: PPUSH
9218: LD_VAR 0 1
9222: PPUSH
9223: LD_INT 14
9225: PPUSH
9226: CALL_OW 425
// MoveAreaXY ( botspawn , k , 102 ) ;
9230: LD_INT 7
9232: PPUSH
9233: LD_VAR 0 2
9237: PPUSH
9238: LD_INT 102
9240: PPUSH
9241: CALL_OW 425
// if k = 227 then
9245: LD_VAR 0 2
9249: PUSH
9250: LD_INT 227
9252: EQUAL
9253: IFFALSE 9263
// k = 247 ;
9255: LD_ADDR_VAR 0 2
9259: PUSH
9260: LD_INT 247
9262: ST_TO_ADDR
// if i = 183 then
9263: LD_VAR 0 1
9267: PUSH
9268: LD_INT 183
9270: EQUAL
9271: IFFALSE 9281
// i = 203 ;
9273: LD_ADDR_VAR 0 1
9277: PUSH
9278: LD_INT 203
9280: ST_TO_ADDR
// i = i - 1 ;
9281: LD_ADDR_VAR 0 1
9285: PUSH
9286: LD_VAR 0 1
9290: PUSH
9291: LD_INT 1
9293: MINUS
9294: ST_TO_ADDR
// k = k - 1 ;
9295: LD_ADDR_VAR 0 2
9299: PUSH
9300: LD_VAR 0 2
9304: PUSH
9305: LD_INT 1
9307: MINUS
9308: ST_TO_ADDR
// until i = 400 end ;
9309: LD_VAR 0 1
9313: PUSH
9314: LD_INT 400
9316: EQUAL
9317: IFFALSE 9188
9319: PPOPN 2
9321: END
// every 0 0$03 do var i , l , c ;
9322: GO 9324
9324: DISABLE
9325: LD_INT 0
9327: PPUSH
9328: PPUSH
9329: PPUSH
// begin if mp_game_type = 1 then
9330: LD_OWVAR 6
9334: PUSH
9335: LD_INT 1
9337: EQUAL
9338: IFFALSE 9712
// begin l = 0 ;
9340: LD_ADDR_VAR 0 2
9344: PUSH
9345: LD_INT 0
9347: ST_TO_ADDR
// for i = 1 to TeamA do
9348: LD_ADDR_VAR 0 1
9352: PUSH
9353: DOUBLE
9354: LD_INT 1
9356: DEC
9357: ST_TO_ADDR
9358: LD_EXP 7
9362: PUSH
9363: FOR_TO
9364: IFFALSE 9524
// begin if FilterAllUnits ( [ [ f_side , TeamA [ i ] ] , [ f_or , [ f_btype , b_depot ] , [ f_btype , b_warehouse ] ] ] ) = 0 or not MultiplayerSideAlive ( TeamA [ i ] ) then
9366: LD_INT 22
9368: PUSH
9369: LD_EXP 7
9373: PUSH
9374: LD_VAR 0 1
9378: ARRAY
9379: PUSH
9380: EMPTY
9381: LIST
9382: LIST
9383: PUSH
9384: LD_INT 2
9386: PUSH
9387: LD_INT 30
9389: PUSH
9390: LD_INT 0
9392: PUSH
9393: EMPTY
9394: LIST
9395: LIST
9396: PUSH
9397: LD_INT 30
9399: PUSH
9400: LD_INT 1
9402: PUSH
9403: EMPTY
9404: LIST
9405: LIST
9406: PUSH
9407: EMPTY
9408: LIST
9409: LIST
9410: LIST
9411: PUSH
9412: EMPTY
9413: LIST
9414: LIST
9415: PPUSH
9416: CALL_OW 69
9420: PUSH
9421: LD_INT 0
9423: EQUAL
9424: PUSH
9425: LD_EXP 7
9429: PUSH
9430: LD_VAR 0 1
9434: ARRAY
9435: PPUSH
9436: CALL_OW 108
9440: NOT
9441: OR
9442: IFFALSE 9458
// l = l + 1 ;
9444: LD_ADDR_VAR 0 2
9448: PUSH
9449: LD_VAR 0 2
9453: PUSH
9454: LD_INT 1
9456: PLUS
9457: ST_TO_ADDR
// if l = TeamA and mp_sides_teams [ your_side ] = 1 then
9458: LD_VAR 0 2
9462: PUSH
9463: LD_EXP 7
9467: EQUAL
9468: PUSH
9469: LD_OWVAR 15
9473: PUSH
9474: LD_OWVAR 2
9478: ARRAY
9479: PUSH
9480: LD_INT 1
9482: EQUAL
9483: AND
9484: IFFALSE 9490
// begin YouLostInMultiplayer ( ) ;
9486: CALL_OW 107
// end ; if l = TeamA and mp_sides_teams [ your_side ] = 2 then
9490: LD_VAR 0 2
9494: PUSH
9495: LD_EXP 7
9499: EQUAL
9500: PUSH
9501: LD_OWVAR 15
9505: PUSH
9506: LD_OWVAR 2
9510: ARRAY
9511: PUSH
9512: LD_INT 2
9514: EQUAL
9515: AND
9516: IFFALSE 9522
// YouWinInMultiplayer ( ) ;
9518: CALL_OW 106
// end ;
9522: GO 9363
9524: POP
9525: POP
// l = 0 ;
9526: LD_ADDR_VAR 0 2
9530: PUSH
9531: LD_INT 0
9533: ST_TO_ADDR
// for i = 1 to TeamB do
9534: LD_ADDR_VAR 0 1
9538: PUSH
9539: DOUBLE
9540: LD_INT 1
9542: DEC
9543: ST_TO_ADDR
9544: LD_EXP 8
9548: PUSH
9549: FOR_TO
9550: IFFALSE 9710
// begin if FilterAllUnits ( [ [ f_side , TeamB [ i ] ] , [ f_or , [ f_btype , b_depot ] , [ f_btype , b_warehouse ] ] ] ) = 0 or not MultiplayerSideAlive ( TeamB [ i ] ) then
9552: LD_INT 22
9554: PUSH
9555: LD_EXP 8
9559: PUSH
9560: LD_VAR 0 1
9564: ARRAY
9565: PUSH
9566: EMPTY
9567: LIST
9568: LIST
9569: PUSH
9570: LD_INT 2
9572: PUSH
9573: LD_INT 30
9575: PUSH
9576: LD_INT 0
9578: PUSH
9579: EMPTY
9580: LIST
9581: LIST
9582: PUSH
9583: LD_INT 30
9585: PUSH
9586: LD_INT 1
9588: PUSH
9589: EMPTY
9590: LIST
9591: LIST
9592: PUSH
9593: EMPTY
9594: LIST
9595: LIST
9596: LIST
9597: PUSH
9598: EMPTY
9599: LIST
9600: LIST
9601: PPUSH
9602: CALL_OW 69
9606: PUSH
9607: LD_INT 0
9609: EQUAL
9610: PUSH
9611: LD_EXP 8
9615: PUSH
9616: LD_VAR 0 1
9620: ARRAY
9621: PPUSH
9622: CALL_OW 108
9626: NOT
9627: OR
9628: IFFALSE 9644
// l = l + 1 ;
9630: LD_ADDR_VAR 0 2
9634: PUSH
9635: LD_VAR 0 2
9639: PUSH
9640: LD_INT 1
9642: PLUS
9643: ST_TO_ADDR
// if l = TeamB and mp_sides_teams [ your_side ] = 2 then
9644: LD_VAR 0 2
9648: PUSH
9649: LD_EXP 8
9653: EQUAL
9654: PUSH
9655: LD_OWVAR 15
9659: PUSH
9660: LD_OWVAR 2
9664: ARRAY
9665: PUSH
9666: LD_INT 2
9668: EQUAL
9669: AND
9670: IFFALSE 9676
// begin YouLostInMultiplayer ( ) ;
9672: CALL_OW 107
// end ; if l = TeamB and mp_sides_teams [ your_side ] = 1 then
9676: LD_VAR 0 2
9680: PUSH
9681: LD_EXP 8
9685: EQUAL
9686: PUSH
9687: LD_OWVAR 15
9691: PUSH
9692: LD_OWVAR 2
9696: ARRAY
9697: PUSH
9698: LD_INT 1
9700: EQUAL
9701: AND
9702: IFFALSE 9708
// YouWinInMultiplayer ( ) ;
9704: CALL_OW 106
// end ;
9708: GO 9549
9710: POP
9711: POP
// end ; enable ;
9712: ENABLE
// end ;
9713: PPOPN 3
9715: END
// on UnitDestroyed ( u ) do var i , k ;
9716: LD_INT 0
9718: PPUSH
9719: PPUSH
// begin if GetType ( u ) = unit_human then
9720: LD_VAR 0 1
9724: PPUSH
9725: CALL_OW 247
9729: PUSH
9730: LD_INT 1
9732: EQUAL
9733: IFFALSE 9865
// for i = 1 to playersides do
9735: LD_ADDR_VAR 0 2
9739: PUSH
9740: DOUBLE
9741: LD_INT 1
9743: DEC
9744: ST_TO_ADDR
9745: LD_EXP 5
9749: PUSH
9750: FOR_TO
9751: IFFALSE 9863
// if GetSide ( u ) = playersides [ i ] then
9753: LD_VAR 0 1
9757: PPUSH
9758: CALL_OW 255
9762: PUSH
9763: LD_EXP 5
9767: PUSH
9768: LD_VAR 0 2
9772: ARRAY
9773: EQUAL
9774: IFFALSE 9861
// begin if GetClass ( u ) = 12 then
9776: LD_VAR 0 1
9780: PPUSH
9781: CALL_OW 257
9785: PUSH
9786: LD_INT 12
9788: EQUAL
9789: IFFALSE 9797
// begin exit ;
9791: POP
9792: POP
9793: GO 9865
// end else
9795: GO 9861
// begin queue := Replace ( queue , i , queue [ i ] + 1 ) ;
9797: LD_ADDR_EXP 6
9801: PUSH
9802: LD_EXP 6
9806: PPUSH
9807: LD_VAR 0 2
9811: PPUSH
9812: LD_EXP 6
9816: PUSH
9817: LD_VAR 0 2
9821: ARRAY
9822: PUSH
9823: LD_INT 1
9825: PLUS
9826: PPUSH
9827: CALL_OW 1
9831: ST_TO_ADDR
// if Multiplayer then
9832: LD_OWVAR 4
9836: IFFALSE 9857
// begin if GetMultiplayerSetting ( 13 ) <> 0 then
9838: LD_INT 13
9840: PPUSH
9841: CALL_OW 426
9845: PUSH
9846: LD_INT 0
9848: NONEQUAL
9849: IFFALSE 9855
// PrepareRespawn ;
9851: CALL 9868 0 0
// end else
9855: GO 9861
// PrepareRespawn ;
9857: CALL 9868 0 0
// end ; end ;
9861: GO 9750
9863: POP
9864: POP
// end ;
9865: PPOPN 3
9867: END
// export function PrepareRespawn ; var depots , b , i , k , l , clock ; begin
9868: LD_INT 0
9870: PPUSH
9871: PPUSH
9872: PPUSH
9873: PPUSH
9874: PPUSH
9875: PPUSH
9876: PPUSH
// clock = 2 2$30 ;
9877: LD_ADDR_VAR 0 7
9881: PUSH
9882: LD_INT 5250
9884: ST_TO_ADDR
// if Multiplayer then
9885: LD_OWVAR 4
9889: IFFALSE 9933
// begin if GetMultiplayerSetting ( 13 ) = 1 then
9891: LD_INT 13
9893: PPUSH
9894: CALL_OW 426
9898: PUSH
9899: LD_INT 1
9901: EQUAL
9902: IFFALSE 9912
// clock = 4 4$30 ;
9904: LD_ADDR_VAR 0 7
9908: PUSH
9909: LD_INT 9450
9911: ST_TO_ADDR
// if GetMultiplayerSetting ( 13 ) = 2 then
9912: LD_INT 13
9914: PPUSH
9915: CALL_OW 426
9919: PUSH
9920: LD_INT 2
9922: EQUAL
9923: IFFALSE 9933
// clock = 2 2$00 ;
9925: LD_ADDR_VAR 0 7
9929: PUSH
9930: LD_INT 4200
9932: ST_TO_ADDR
// end ; wait ( clock ) ;
9933: LD_VAR 0 7
9937: PPUSH
9938: CALL_OW 67
// for i = 1 to playersides do
9942: LD_ADDR_VAR 0 4
9946: PUSH
9947: DOUBLE
9948: LD_INT 1
9950: DEC
9951: ST_TO_ADDR
9952: LD_EXP 5
9956: PUSH
9957: FOR_TO
9958: IFFALSE 10308
// if queue [ i ] > 0 then
9960: LD_EXP 6
9964: PUSH
9965: LD_VAR 0 4
9969: ARRAY
9970: PUSH
9971: LD_INT 0
9973: GREATER
9974: IFFALSE 10306
// begin depots = FilterAllUnits ( [ [ f_or , [ f_btype , b_depot ] , [ f_btype , b_warehouse ] ] , [ f_side , playersides [ i ] ] ] ) ;
9976: LD_ADDR_VAR 0 2
9980: PUSH
9981: LD_INT 2
9983: PUSH
9984: LD_INT 30
9986: PUSH
9987: LD_INT 0
9989: PUSH
9990: EMPTY
9991: LIST
9992: LIST
9993: PUSH
9994: LD_INT 30
9996: PUSH
9997: LD_INT 1
9999: PUSH
10000: EMPTY
10001: LIST
10002: LIST
10003: PUSH
10004: EMPTY
10005: LIST
10006: LIST
10007: LIST
10008: PUSH
10009: LD_INT 22
10011: PUSH
10012: LD_EXP 5
10016: PUSH
10017: LD_VAR 0 4
10021: ARRAY
10022: PUSH
10023: EMPTY
10024: LIST
10025: LIST
10026: PUSH
10027: EMPTY
10028: LIST
10029: LIST
10030: PPUSH
10031: CALL_OW 69
10035: ST_TO_ADDR
// if depots then
10036: LD_VAR 0 2
10040: IFFALSE 10295
// begin for l = 1 to queue [ i ] do
10042: LD_ADDR_VAR 0 6
10046: PUSH
10047: DOUBLE
10048: LD_INT 1
10050: DEC
10051: ST_TO_ADDR
10052: LD_EXP 6
10056: PUSH
10057: LD_VAR 0 4
10061: ARRAY
10062: PUSH
10063: FOR_TO
10064: IFFALSE 10268
// begin b := depots [ Rand ( 1 , depots ) ] ;
10066: LD_ADDR_VAR 0 3
10070: PUSH
10071: LD_VAR 0 2
10075: PUSH
10076: LD_INT 1
10078: PPUSH
10079: LD_VAR 0 2
10083: PPUSH
10084: CALL_OW 12
10088: ARRAY
10089: ST_TO_ADDR
// uc_side = playersides [ i ] ;
10090: LD_ADDR_OWVAR 20
10094: PUSH
10095: LD_EXP 5
10099: PUSH
10100: LD_VAR 0 4
10104: ARRAY
10105: ST_TO_ADDR
// uc_nation = mp_sides_nations [ playersides [ i ] ] ;
10106: LD_ADDR_OWVAR 21
10110: PUSH
10111: LD_OWVAR 16
10115: PUSH
10116: LD_EXP 5
10120: PUSH
10121: LD_VAR 0 4
10125: ARRAY
10126: ARRAY
10127: ST_TO_ADDR
// hc_name =  ;
10128: LD_ADDR_OWVAR 26
10132: PUSH
10133: LD_STRING 
10135: ST_TO_ADDR
// hc_skills = [ waves / 5 mod 11 , waves / 5 mod 11 , waves / 5 mod 11 , waves / 5 mod 11 ] ;
10136: LD_ADDR_OWVAR 31
10140: PUSH
10141: LD_EXP 1
10145: PUSH
10146: LD_INT 5
10148: DIVREAL
10149: PUSH
10150: LD_INT 11
10152: MOD
10153: PUSH
10154: LD_EXP 1
10158: PUSH
10159: LD_INT 5
10161: DIVREAL
10162: PUSH
10163: LD_INT 11
10165: MOD
10166: PUSH
10167: LD_EXP 1
10171: PUSH
10172: LD_INT 5
10174: DIVREAL
10175: PUSH
10176: LD_INT 11
10178: MOD
10179: PUSH
10180: LD_EXP 1
10184: PUSH
10185: LD_INT 5
10187: DIVREAL
10188: PUSH
10189: LD_INT 11
10191: MOD
10192: PUSH
10193: EMPTY
10194: LIST
10195: LIST
10196: LIST
10197: LIST
10198: ST_TO_ADDR
// hc_class = Rand ( 1 , 4 ) ;
10199: LD_ADDR_OWVAR 28
10203: PUSH
10204: LD_INT 1
10206: PPUSH
10207: LD_INT 4
10209: PPUSH
10210: CALL_OW 12
10214: ST_TO_ADDR
// hc_sex = Rand ( 1 , 2 ) ;
10215: LD_ADDR_OWVAR 27
10219: PUSH
10220: LD_INT 1
10222: PPUSH
10223: LD_INT 2
10225: PPUSH
10226: CALL_OW 12
10230: ST_TO_ADDR
// PlaceUnitXYR ( CreateHuman , GetX ( b ) , GetY ( b ) , 13 , true ) ;
10231: CALL_OW 44
10235: PPUSH
10236: LD_VAR 0 3
10240: PPUSH
10241: CALL_OW 250
10245: PPUSH
10246: LD_VAR 0 3
10250: PPUSH
10251: CALL_OW 251
10255: PPUSH
10256: LD_INT 13
10258: PPUSH
10259: LD_INT 1
10261: PPUSH
10262: CALL_OW 50
// end ;
10266: GO 10063
10268: POP
10269: POP
// queue := Replace ( queue , i , 0 ) ;
10270: LD_ADDR_EXP 6
10274: PUSH
10275: LD_EXP 6
10279: PPUSH
10280: LD_VAR 0 4
10284: PPUSH
10285: LD_INT 0
10287: PPUSH
10288: CALL_OW 1
10292: ST_TO_ADDR
// end else
10293: GO 10306
// begin wait ( 1 1$00 ) ;
10295: LD_INT 2100
10297: PPUSH
10298: CALL_OW 67
// PrepareRespawn ;
10302: CALL 9868 0 0
// end ; end ;
10306: GO 9957
10308: POP
10309: POP
// end ;
10310: LD_VAR 0 1
10314: RET
